我在我的应用程序上做了类似于下面的操作,但我无法获得routeChangeSuccess事件。
var myapp = angular.module('myapp', ["ui.router", "ngRoute"]);
myapp.controller("home.RootController",
function($rootScope, $scope, $location, $route) {
$scope.menus = [{ 'name': 'Home ', 'link': '#/home'}, {'name': 'services', 'link': '#/services'} ]
$scope.$on('$routeChangeSuccess', function(event, current) {
alert('route changed');
});
}
);
myapp.config(
function($stateProvider, $urlRouterProvider, $routeProvider) {
$urlRouterProvider.otherwise("/home");
$stateProvider
.state('home', {
url: "/home",
//template: '<h1>Home Screen</h1>'
templateUrl: "/Client/Views/Home/Home.htm"
})
.state('services', {
url: "/services",
//template: '<h1>Service screen</h1>'
templateUrl: "/Client/Views/Home/service.htm"
});
});
如下非常简单的html也失败
<body ng-controller="home.RootController">
<ul class="nav">
<li ng-repeat="menu in menus" "="">
<a href="{{menu.link}}">{{menu.name}}</a>
</li>
</ul>
<div ui-view> No data yet!</div>
</body>
但是当我点击链接时,我看到视图正在更新,但$ routeChangeSucces事件从未被触发。
有什么我想念的吗?
另一个问题我有一个事件,我可以挂钩知道视图已经准备就绪,所以我可以开始一些额外的处理,比如document.ready()。
plnlr但未完全正常工作......
此致 基兰
答案 0 :(得分:42)
请检查此维基:State Change Events。提取物:
$ stateChangeSuccess - 状态转换完成后触发。
$ $范围上(&#39; $ stateChangeSuccess&#39 ;,
function(event,toState,toParams,fromState,fromParams){...})
因此,而不是$routeChangeSuccess
使用$stateChangeSuccess
。
要获取有关所有可用事件的更多详细信息,请查看wiki Events。 在这里您可以找到适合您的活动,可以是活动$viewContentLoaded
......
答案 1 :(得分:0)
stateChange
个事件现已弃用并已删除,请改用transitions。
$transitions.onSuccess({}, function () {
console.log("state changed");
});