为什么即使在状态改变成功之后,旧状态的控制器也会被执行

时间:2015-09-16 11:31:26

标签: angularjs angular-ui-router

假设有两种状态,A和B.

.state("A", {
  url:'/A',
  template: '<div></div>',
  controller: 'ACtrl',
}).state("B", {
  url:'/B',
  template: '<div></div>',
  controller: 'BCtrl',
})

然后有两个控制器:

.controller('ACtrl',function($state){
    $state.go('B');
    console.log('Why is this getting executed?');
  })
.controller('BCtrl',function($state){

  })

现在我要去url-&gt; /为什么即使成功更改状态后,console.log语句也会被执行?

控制器应停止工作。 请让我知道我哪里出错了。 我刚开始探索UI-Router和AngularJs。

2 个答案:

答案 0 :(得分:1)

  

控制器应停止工作。请告诉我哪里出错了。

不,不应该。只有很少的语句/结构可以充当代码流控制并阻止后续代码执行。那些是

你没有这样的事情,因此你的代码会被执行。正如所料。

答案 1 :(得分:0)

如果在任何控制器的初始化中实现$ state.go,则必须调用该控制器的所有方法(即使状态已更改,也是控制器的默认行为)。虽然在任何控制器的初始化中实现$ state.go没有任何意义。但为了理解,你可以通过做不同的事情来检查。我以为你明白了我的意思。