【发布时间】:2016-08-10 00:52:54
【问题描述】:
我将尝试提供一个示例伪代码,以便能够尽可能详细地解释我的问题。我无法在此处放置工作代码,因为其中涉及太多层、指令和模板。
我的基本结构是:
...
<div>
<div ui-view>
<div ui-view></div>
</div>
</div>
...
当父 ui-view 中的代码执行 $state.go 以更新子 ui-view 时,父代码也会再次加载。
假设父状态称为contact,子状态称为details。我的$state.go 调用是$state.go("contact.details"),$stateProvider 配置如下所示:
$stateProvider.state({ name: "contact" /*, rest of properties */ });
$stateProvider.state({ name: "contact.details", /*, rest of properties */ });
此外,整个子 ui-view 发生在指令嵌入中。假设它是:
<div>
<div ui-view>
<directive>
<content>
<div ui-view></div>
</content>
</directive>
</div>
</div>
通过这些详细信息,您是否发现任何问题?为什么$state.go("contact.details") 也重新加载contact? (请注意,contact.details 已加载,但重新加载 contact 有副作用,因为控制器再次执行...)。
更新
如果我在contact 的控制器上调用$state.go("details"),它会发生同样的问题,但是一旦加载,当我$state.go 到其他子状态时,每个子状态都会按预期打开,但是再次调用父状态的控制器。
【问题讨论】:
-
你为什么使用两个未命名的
uiView指令?? -
@Hitmands 好吧,它们是无人驾驶的,但属于不同的州
-
@Hitmands 看到我说的第二个子ui-view是一些指令嵌入的内容
标签: javascript angularjs html angularjs-directive angular-ui-router