Angular.js + ui-router错误的控制器

时间:2017-04-08 20:34:11

标签: angularjs angularjs-directive angularjs-scope angular-ui-router angularjs-controller

我使用的是角1.6.1和angular-ui-router 0.3.2。

我的基本路线设置如下:

{
  state: 'home',
  config: {
    url: '/home',
    templateUrl: '...',
    title: 'home'
  }
},
{
  state: 'view',
  config: {
    url: '/view',
    controller: '...',
    controllerAs: 'vm',
    templateUrl: '...',
    title: 'view'
  }
}

然后根据需要将此对象传递给$routeProvider.state()。 在我的home州,我使用$state.go()切换到view州。 当我在视图状态时,我的模板看起来像这样:

<div>
  <div class="go-back" ng-click="vm.goBack()">
    <img src="/src/assets/images/back.png"/>
  </div>
  <tabs>
    <tab>
      <directive1></directive1>
    </tab>
    <tab>
    </tab>
    <tab>
    </tab>
  </tabs>
  <directive2></directive2>
  <directive3></directive3>
</div>

这里的每个指令都有一个绑定控制器。

我的问题是指令控制器是错误的。我的意思是,如果我在检查器中检查示例directive2 html,并尝试使用angular.element($0).scope()在chrome中检查它的控制器,我将得到一个范围不正确的范围该指令。 甚至更奇怪它的父范围是directive3的范围。如果我要从模板中移除directive3directive2将再次开始工作,并且它将附加正确的范围。 如果我将directive2放在directive3下的模板中,它也会解决此问题。 模板中的<div class="go-back">...</div>元素也存在同样的问题。它的范围是正确的,并调用vm.goBack()函数,但如果我要从模板中删除directive3,则vm.goBack()不再被调用(甚至在检查控制台中的元素范围时,它是正确的范围)。 其他控制器仍然存在问题,由于某些原因没有将正确的范围附加到它们上面,我无法弄清楚原因。

0 个答案:

没有答案