2013-04-29 3 views
3

에 UI를 라우터에 상응 내가 내 데이터 그리드에서 페이징을 수행하려면 다음을 사용하고 있습니다 :

페이지 현재 페이지 번호입니다
$location.search('page', page); 

.

은 그 때 나는 다음과 같은 이벤트를 수신 :

URL에있는 currentPage를 업데이트 한 후 내 범위에서 검색() 메서드 호출을 트리거
$scope.$on('$routeUpdate', function(next, current) { 
      $scope.currentPage = $routeParams.page ? Number($routeParams.page) : 1; 

      $scope.search(); 
     }); 

.

어떻게하면 ui-router가있는 상태로 변환 할 수 있습니까? 경로 대신 상태 관리자를 사용하기 때문에 $ routeUpdate가 더 이상 트리거되지 않습니다.

내 경로

지금과 같은 상태 공급자에 정의되어

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

'$ stateProvider' 란 무엇입니까? – Langdon

+1

그것은 AngularJS의 ui-router 플러그인의 일부입니다. 그것은 국가 관리를 제공합니다. – Sam

답변

10

대신 $ locationChangeSuccess 이벤트를 듣고 해결했습니다.

+0

'$ locationUange '는 다른 페이지/경로로 갈 때'$ locationChangeSuccess'가 실행되는 반면,'$ routeUpdate'는 실행되지 않습니다. 그것을 해결하기 위해'$ location.path()'에 대한 추가 검사를 핸들러에 추가해야했습니다. –

0

내가 그 논리를 넣어 (귀하의 예제에서 mandatsCtrl)를 controller를 사용하려고합니다. 뷰 컨트롤러는 모든 매개 변수 변화에 호출됩니다, 당신은 페이지 번호를 탐구하는

다른 유사한 옵션을 얻을하는 데에 $ stateParams를 주입 할 수 내가 어떤 점에서 사용했던 것입니다되는 view controllers입니다

마지막으로, $ stateParams가 주사 가능하기 때문에 맞춤형 지시문에 직접 주입하여 바로 사용할 수 있습니다.