状态控制器是无意中重建的

时间:2016-07-29 12:54:44

标签: angularjs angular-ui-router

我有两种状态:

  .state('a.b', {
    url: "",
    views: {
      "b": {
        template: require('./ab.html'),            
        controller: ABController
    }
  })
  .state('a.b.c', {
    url: "/:someid",
    views: {
      "c": {                                            
        template: require('./abc.html'),            
        controller: ABCController
    }
  })

使用ab.html:

<div ui-view="c"></div>

当我从状态a.b导航到状态a.b.c时,我看到正在重建ABController,而当我从状态a.b.c导航到a.b时,ABContoller没有被重建。

我真正想要实现的是在从a.b导航到a.b.c或从a.b.c导航到a.b时不重建ABContoller。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:0)

所以,答案是这确实是可能的,它是默认情况下发生的,因为正如我所期待的那样,ui-router会根据from和to状态仔细跟踪需要销毁/创建的状态。

在这种情况下,触发额外构造的是我的两个状态使用相同的参数变量,这迫使ui-router将状态路径的公共元素视为不同。

基本上,修复涉及从状态定义中删除未使用/错误的“params”属性。