AngularJS ui-router,如何防止其他命名视图重新加载/重置

时间:2014-07-17 08:26:38

标签: angularjs angular-ui-router

我已经阅读了angularjs-ui-router的文档,一堆示例和一堆stackoverflow帖子,但我似乎无法弄清楚如何做这个非常具体的事情。

问题是有一组命名视图,只想更新其中一个而不重新加载/重置其他命名视图。我已经尝试过它们之间的某种状态继承,但它有点没有意义,因为它们都不应该成为另一个的祖先。

假设我有一个嵌套的未命名的ui视图,其中包含3个命名视图,如下所示:

<div>
  <div ui-view="viewA"></div>
  <div ui-view="viewB"></div>
  <div ui-view="viewC"></div>

  <a ui-sref="mystate.stateA">Activate A</a>
  <a ui-sref="mystate.stateB">Activate B</a>
  <a ui-sref="mystate.stateC">Activate C</a>
</div>

然后,在我的州提供者中,我有以下配置:

.state('mystate', {
  url: "/mystate",
  views : {
    "": { templateUrl: "/app/views/myview.html", controller: "myController" },
    "viewA": { template: "Nothing" },
    "viewB": { template: "Nothing" },
    "viewC": { template: "Nothing" }
  }
})

.state('mystate.stateA', {
  url: "/stateA",
  views : {
    "viewA": { template: "A" }
  }
})

.state('mystate.stateB', {
  url: "/stateB",
  views : {
    "viewB": { template: "B" }
  }
})

.state('mystate.stateC', {
  url: "/stateC",
  views : {
    "viewC": { template: "C" }
  }
})

现在,当我点击链接“激活A”时,它在viewA中显示字符串“A”而不是“Nothing”,到目前为止一直很好。但当我点击链接“激活B”时,viewA“重置”到祖先状态的“Nothing”,而viewB显示“B”。

我想知道的是,在这种情况下是否可以阻止viewA重置为“Nothing”?

0 个答案:

没有答案