我使用angularjs: 1.6.5 和ui-router: 1.0.3
主要HTML:
<div ng-app="MusicApp" ng-controller="AppCtrl">
<div ng-include="plugins_url + 'templates/sideMenu.html'"></div>
<md-content ng-controller="playlistController">
<div ng-include="plugins_url + 'templates/header.html'"></div>
<div class="all_content" >
<div ng-show="!isHome">
<div ui-view id="other_views" ></div>
</div>
<div ng-include="plugins_url + 'templates/main.html'" ng-show="isHome"></div>
</div>
</md-content>
[etc]
来自 sideMenu.html 的内容:
<li><a ui-sref="charter">Home</a></li>
<li><a ui-sref="charter.test">Test</a></li>
我的问题是,基本上没有一个stateChange提供工作,我已经尝试过:$ stateChangeError,$ stateChangeCancel,$ stateChangeStart,$ stateChangeSuccess,如下所示:
$rootScope.$on('$stateChangeSuccess', function (event, toState, toParams, fromState) {
console.log('called')
})
但它从未被调用过...试图把它放在.config中,在每个控制器中,用$ scope和/或$ rootScope尝试它,但是nada。
奇怪的是,我在控制台中将此视为警告:
angular.min.js?1507208413&ver=4.8.2:123 $route service is not available. Make sure you have included ng-route in your application dependencies.
因此它以某种方式无法识别ui.router,当然它是作为文件加载的,并作为&#39; ui.router&#39; 插入到依赖项中。最奇怪的部分是,ui-sref正在工作,你可以在sideMenu.html中看到......
是否可能存在兼容性问题......某处?
感谢任何帮助!
修改 我尝试过ui.router 0.4.3及更早的版本,但它甚至没有启动应用程序......
答案 0 :(得分:1)
您不能将$rootScope.$on('$stateChangeSuccess'
用于ui-router: 1.0.3
(&gt; 1.0.0)
相反,您有$transitions.on
$transitions.onStart( {}, function (trans) {
console.log('called');
console.log(trans.to().name);
console.log(trans.from().name);
});
参考:https://ui-router.github.io/ng1/docs/latest/modules/ng1_state_events.html#_statechangesuccess