不能用ui路由器将$ scope和constants注入抽象状态的控制器中

时间:2015-02-07 11:52:37

标签: angularjs angular-ui-router

我正在使用最新的ui路由器使用angular 1.3.11。

当我通过以下方式将$ scope或constants注入到我的DateplannerController中时:

'use strict';
angular.module('test').controller('DateplannerController', function (stateConfiguration, $scope, $state) {

});

然后没有定义stateConfiguration AND $ scope。

为什么?

   .state('main.projects.selected.dates', {
            url: '/planner',
            abstract: true,
            views: {
              'menu@': {
                templateUrl: '../views/menu.html',
                controller: 'MenuController'
              },
              'content@': {
                templateUrl: '../views/dateplanner/dateplanner.html',
                controller: 'DateplannerController'
              }
            }
          })



    'use strict';
    angular
      .module('test', ['ui.router', 'ui.grid', 'ui.grid.selection',
        'ui.grid.resizeColumns', 'ui.bootstrap', 'angularMoment', 'LocalStorageModule', 'textAngular', 'angularModalService'] )
      .constant('stateConfiguration', {
            state1: 'bla'
      })

1 个答案:

答案 0 :(得分:0)

我认为你忽略了一个与抽象状态有关的事情:

  

抽象状态可以具有子状态但不能自行激活。一个'摘要'国家只是一个无法转变的国家。当其中一个后代被激活时,它会被隐式激活。

请参阅:https://github.com/angular-ui/ui-router/wiki/Nested-States-%26-Nested-Views#abstract-states

我的猜测是,您正试图导航到无法工作的/planner。您已添加子状态并导航到该URL。根据您提供的代码很难说出现了什么问题。我建议查看我上面链接的页面上的示例。