状态变化没有解雇但是ui.router不起作用

时间:2017-10-05 13:20:38

标签: angularjs angular-ui-router

我使用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及更早的版本,但它甚至没有启动应用程序......

1 个答案:

答案 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

Demo Plunker