angularJS: пользовательский интерфейс, эквивалентный $location.search

Я использую следующее для подкачки в моей сетке данных:

$location.search('page', page);

где страница — номер текущей страницы.

Затем я слушаю следующее событие:

   $scope.$on('$routeUpdate', function(next, current) {
            $scope.currentPage = $routeParams.page ? Number($routeParams.page) : 1;

            $scope.search();
        });

Это вызывает вызов метода search() в моей области после обновления текущей страницы, которая находится в URL-адресе.

Как бы я перевел это в состояния с помощью ui-router? $routeUpdate больше не запускается, так как вместо маршрутов я использую диспетчер состояний.

Мой маршрут теперь определен в провайдере состояния как таковой:

   $stateProvider
        .state('mandats', {
            url: '/domiciliations/mandats',
            templateUrl: 'domiciliations/views/mandats.html',
            controller: 'mandatsCtrl'
        })

person Sam    schedule 29.04.2013    source источник
comment
Что такое $stateProvider?   -  person Langdon    schedule 29.04.2013
comment
это часть плагина ui-router AngularJS. Он обеспечивает управление состоянием.   -  person Sam    schedule 29.04.2013


Ответы (2)


Вместо этого я прослушал событие $locationChangeSuccess, и это решило проблему.

person Sam    schedule 03.05.2013
comment
Обратите внимание, что $locationChangeSuccess будет срабатывать при переходе на другую страницу/маршрут, а $routeUpdate — нет. Мне нужно было добавить дополнительную проверку для $location.path() в обработчик, чтобы исправить это - person Dmitry Gonchar; 26.04.2017

Я бы попытался использовать контроллер (mandatsCtrl в вашем примере) поставить эту логику. контроллер представления будет вызываться при каждом изменении параметра, и вы можете внедрить в него $stateParams, чтобы получить страницу #

другим подобным вариантом для изучения являются контроллеры представления, которые что я использовал в какой-то момент

наконец, поскольку $stateParams является инъекционным, вы можете захотеть внедрить его в свою пользовательскую директиву и использовать его там прямо

person Lior    schedule 02.05.2013