Форум программистов, компьютерный форум, киберфорум
Наши страницы
JavaScript: Angular 2, AngularJS
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
KOPC15
1 / 1 / 0
Регистрация: 20.04.2014
Сообщений: 60
1

Как проверить, что аякс-запрос уже отработал?

24.10.2014, 18:33. Просмотров 638. Ответов 1
Метки нет (Все метки)

Всем привет!)

Не знаю как сделать проверку на то, что аякс запрос в контроллере уже был ранее выполнен, чтобы он не выполнялся постоянно, когда переходишь по ссылке.
И как сделать, чтобы по-умолчанию показывался первый элемент, то есть если в адресной строке не писать id категории, автоматически прописывался этот id и открывалась эта категория

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
servicesCatalog.config(['$routeProvider', function ($routeProvider) {
        $routeProvider.
            when('/catalog/:categoryId', {
                templateUrl: 'views/catalog.html',
                controller: 'Catalog'
            }).
            when('/favorites', {
                templateUrl: 'views/favorites.html',
                controller: 'Favorites'
            }).
            when('/applications', {
                templateUrl: 'views/applications.html',
                controller: 'Applications'
            }).
            when('/catalog/:categoryId/:serviceId', {
                templateUrl: 'views/service-detail.html'
            }).
            otherwise({
                redirectTo: '/catalog/:categoryId'
            });
}]);
 
 
catalogControllers.controller('Catalog', ['$scope', '$http', '$location', '$routeParams', '$rootScope',
    function($scope, $http, $location, $routeParams, $rootScope) {
        /*if($rootScope.categoryId.length == 0)
        {
            $rootScope.categoryId = 1;
        }*/
 
        if() // что здесь написать ???
        {
 
            $http(
                {
                    method: 'POST',
                    url: 'ajax/ajax.php',
                    data: {action: 'showCategories'}
                }).
                success(function(data, status, headers, config) {
                    $scope.categories = data;
                    $rootScope.ajax = true;
                }).
                error(function(error, status, headers, config) {
                    console.log('ERROR => ' + error);
                });
        }
        $scope.selectedCategory = $scope.categories[$routeParams.categoryId];
        console.log($scope.selectedCategory);
Добавлено через 43 минуты
сделал вот так


Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
var servicesCatalog = angular.module('servicesCatalog', [
    'catalogControllers'
]);
 
servicesCatalog.run(function($rootScope, $http) {
    $rootScope.ajax = false;
});
 
servicesCatalog.config(['$routeProvider', function ($routeProvider) {
        $routeProvider.
            when('/catalog/:categoryId', {
                templateUrl: 'views/catalog.html',
                controller: 'Catalog'
            }).
            when('/favorites', {
                templateUrl: 'views/favorites.html',
                controller: 'Favorites'
            }).
            when('/applications', {
                templateUrl: 'views/applications.html',
                controller: 'Applications'
            }).
            when('/catalog/:categoryId/:serviceId', {
                templateUrl: 'views/service-detail.html'
            }).
            otherwise({
                redirectTo: '/catalog/:categoryId'
            });
}]);
 
 
catalogControllers.controller('Catalog', ['$scope', '$http', '$location', '$routeParams', '$rootScope',
    function($scope, $http, $location, $routeParams, $rootScope) {
 
        /*if($routeParams.categoryId.length == 0)
        {
            $routeParams.categoryId = 0;
        }*/
        if($rootScope.ajax == false)
        {
            $http(
                {
                    method: 'POST',
                    url: 'ajax/ajax.php',
                    async: false,
                    data: {action: 'showCategories'}
                }).
                success(function(data, status, headers, config) {
                    $rootScope.categories = data;
                    $rootScope.ajax = true;
                }).
                error(function(error, status, headers, config) {
                    console.log('ERROR => ' + error);
                });
        }
        
        $scope.selectedCategory = $rootScope.categories[$routeParams.categoryId];
        /*setTimeout(function(){
            $scope.selectedCategory = $rootScope.categories[$routeParams.categoryId];
        }, 1000);*/
 
        $scope.showServices = function (categoryId) {
            $scope.selectedCategory = $rootScope.categories[categoryId];
        };
Но scope.selectedCategory = $rootScope.categories[$routeParams.categoryId]; происходит раньше чем обрабатывается запрос и выдает, что нет такого элемента с таким id, как это исправить?

Как сделать чтобы вывод было после того только, как сработает $http-запрос ?

Добавлено через 59 минут
Кто может помочь пожалуйста????(((((
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.10.2014, 18:33
Ответы с готовыми решениями:

Аякс для уже загруженого через аякс контента?
Здравствуйте! Скажите пожалуйста - как можно сделать чтоб работал аякс для уже...

Как запустить поток, который уже отработал
Кто не хочет открывать солюшн, так скажу: решил сделать программу-мультик, т.е...

как проверить массив на условие, что в нём уже есть все цифры от 0 до 100
одномерный массив: ee: Array of Integer; некоторые елементы заполнены...

Как кликнуть по кнопке, но что б при этом отработал ивент клика
Собственно сабж. Нужно именно кликнуть так что б отработал ивент прикрученный к...

Как убрать предыдущий аякс-запрос
Задача такая: В модальном окне вызываются 2 связанных списка (регионы+города)....

1
whiteapps
408 / 373 / 220
Регистрация: 18.07.2014
Сообщений: 1,258
27.10.2014, 11:43 2
KOPC15, если я верно понял, то тебе нужно почитать в доках или загуглить на тему angularjs route resolve
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.10.2014, 11:43

Как проверить, вернул ли запрос что-либо?
Здравствуйте! Помогите пожалуйста организовать условие: Если 'запрос' не пустой...

Проверить что место уже занято
написал программу парковки автомабилей. после того как забронировал место , оно...

Проверить что форма уже открыта
Здравствуйте. Сделал форму с настройками программы. Форма открывается как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru