2014-02-07 41 views
0

我有一個SPA Angular應用程序,它有兩個主要的html div。其中一種變化頻繁,另一種變化較少。頻繁變化的使用app.config中的$ route。不太經常更改的div也需要注意URL更改,所以我想要聽取$routeParamas中的更改並相應地進行操作。

所以在我的控制,我有:

.controller('SecondaryCtrl', function ($scope, $routeParams, MyService) { 

    $scope.$watch('routeParams', function() { 
     console.log('routeParams: ', $routeParams); 
     // I need $routeParams.projectId to compose an API call. 
    }); 

    ... 

}); 

在控制檯中,$routeParams會返回一個空的對象。我知道,如果遙控器和路徑在App.config中定義的$routeParams可用,但在app.config已經爲給定的路線,其鏈接到PrimaryCtrl定義:

.config(function ($interpolateProvider, $routeProvider) { 
    $routeProvider 
    .when('/project/:projectId', { 
     templateUrl : 'partials/_project_detail.html', 
     controller: 'PrimaryCtrl', 
     resolve: { 
      project: function ($route, MyService) { 
       return MyService.get('projects/', $route.current.params.projectId); 
      }, 
     } 
    }) 

那麼,如何才能當$routeParams發生變化時,我可以訪問我的中的$routeParams

任何幫助非常讚賞

回答

1

你可以聽$routeChangeSuccess事件看$routeParams,這樣的內部:

.controller('SecondaryCtrl', function ($scope, MyService) { 

    $scope.$on('$routeChangeSuccess', function (event, current, previous) { 
     // current is the current route 
     // previous is the previous route 
    }); 

    ... 

}); 

Angular Doc

+0

嗯。我試過這個,在函數中有一個console.log,我什麼都沒有。似乎它不是射擊? –

+0

哦,其實它確實。我只需要確保我有一個路線(例如我的PrimaryCtrl)。 –