我正在我的应用程序上执行以下操作,但是我无法获取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但不能完全正常工作...
问候
基兰
最佳答案
请检查以下Wiki:State Change Events。摘录:
$ stateChangeSuccess-状态转换完成后触发。
$ scope。$ on('$ stateChangeSuccess',
函数(事件,toState,toParams,fromState,fromParams){...})
因此,使用$routeChangeSuccess
代替$stateChangeSuccess
。
要获取有关所有可用事件的更多详细信息,请查看Wiki Events。在这里,您可以找到适合自己的事件,例如事件$viewContentLoaded
...