使用ngRoute可以在事件中挂钩:$routeChangeStart
并执行不同的操作......
app.run(function ($rootScope, $location) {
$rootScope.$on("$routeChangeStart", function (event, next, current) {
................
是否可以使用UI-Router实现相同的目标?
答案 0 :(得分:12)
是的,有可能:
$rootScope.$on("$stateChangeStart",
function (event, toState, toParams, fromState, fromParams) {
答案 1 :(得分:1)
或者只是使用
$scope.$on("$stateChangeStart",...);
如果您希望在单个页面上触发此操作。
答案 2 :(得分:0)
在此处检查此答案,这是解决问题的正确方法。删除所有侦听器可能会产生未知的影响,因为可能还会在其他地方添加侦听器。您需要删除添加的一个,而不是全部删除。
检查此问题:Angular $rootScope $on listeners in 'destroyed' controller keep running
也在此处复制代码以确保完整性:
animateApp.controller('mainController', function($scope, $rootScope, service) {
$scope.pageClass = 'page-home';
var unregister = $rootScope.$on('service.abc', function (newval) {
console.log($scope.$id);
});
$scope.$on('$destroy', unregister);
});