AngularJS ui路由器不适用于子状态

AngularJS ui路由器不适用于子状态,angularjs,angular-ui-router,Angularjs,Angular Ui Router,我正在努力让儿童状态正常工作 当我测试相应的URL时,这些状态中的每一个都显示得很好。但有一个问题 app.config(['$stateProvider', function($stateProvider) { $stateProvider.state('root', { // works 100% url: '/', controller: function($scope) { alert("state: root"); }, template

我正在努力让儿童状态正常工作

当我测试相应的URL时,这些状态中的每一个都显示得很好。但有一个问题

app.config(['$stateProvider', function($stateProvider) {
  $stateProvider.state('root', { // works 100%
    url: '/',
    controller: function($scope) {
      alert("state: root");
    },
    templateUrl: 'root.html'
  })
  .state('program', {  // works 100%
    url: '/program',
    controller: function($scope) {
      alert("state: program");
    },
    templateUrl: 'program.html'
  })
  .state('program.new', {  // works only sorta!
    url: '/new',
    controller: function($scope) {
      alert("state: program.new");
    },
    templateUrl: 'program.new.html'
  });
}]);
…对于program.new,正在选择正确的状态(我正在使用此:)在调试器中记录转换,但只有警报(“状态:program”)触发,而不是警报(“状态:program.new”)。另外,将显示program.html模板,而不是program.new.html模板

子状态的控制器没有机会运行吗?为什么孩子的模板没有出现


需要说明的是,Angular正在计算正确的状态program.new。它似乎没有运行控制器或呈现模板。

找到了答案:program.html模板中没有指令,因此子状态program.new无法呈现到。。。并且控制器仅在视图要渲染时运行。

事实上,似乎有更多情况下控制器部分被忽略。。。如果您使用ui路由器命名视图,那么整个状态的控制器部分将被忽略,但您可以在每个命名视图中放置一个控制器部分!