javascript - Angular UI 路由器状态导航

标签 javascript angularjs angular-ui-router

我在 Angular UI router 中有两个状态:

State
|-Menus (with 2 nested state)
|   |- menus.list
|   |- menus.instruction
|-Order

当我从菜单访问 menus.list 时,我得到了 ID 为 4 的范围,但是当我从 Order 访问菜单时,我得到了范围 ID 为 28 的范围。

这对我来说是个问题,因为我在 Menus Controller 中注册了以下函数。

$rootScope.$on('$stateChangeSuccess',function(event, toState, toParams, fromState, fromParams){
    if(toState.name === 'menus.list'){
        $scope.stateOrder = 1;
    }
    if(toState.name === 'menus.instruction'){
        $scope.stateOrder = 2;
    }
});

我面临的问题是,当我从 Menus 访问 menus.list 时,它会更新模板文件中的 $scope.stateOrder,但是当我输入 menus 时Order 中的 .list 声明它不会更新我在模板中的 $scope.stateOrder。为什么会这样?

最佳答案

我想你想把带有 $rootScope 的代码放在你的 Angular 应用程序的 config 部分下的运行阶段,这将触发设置的回调函数你的州命令。例如:

angular.module('yourApp', ['ui.router'])
.config(function($stateProvider, $urlProvider) {
  //details omitted
}).run(function($rootScope, $urlRouter, $state, $stateParams) {
   $rootScope.$on('$stateChangeSuccess', function(e, toState) {
     e.preventDefault();

     if(toState.name === 'menus.list'){
        $scope.stateOrder = 1;
    }
    if(toState.name === 'menus.instruction'){
        $scope.stateOrder = 2;
    }

   })
});

关于javascript - Angular UI 路由器状态导航,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32284126/

相关文章:

javascript - 通过 Javascript 调用 SQLite 时 Firefox 出错

javascript - moment.js 差异日期格式

javascript - 分页时如何进行正确的搜索

javascript - 在 Ionic 中动态更新滚动区域

javascript - 如何在 Angular 4 上获取引荐来源网址?

javascript - 重用需要 `ui-route` d 参数的 `resolve` Controller

javascript - 带有 Nginx 和 Docker 的 Webpack 开发服务器 : polling info on the wrong address

javascript - 异步显示多个元素

AngularJS:在哪里存储与指令相关的 CSS?

javascript - Internet Explorer 8 中的 Angular-UI-Router 嵌套 View