gpt4 book ai didi

angularjs - 防止在 $location.path() 上重新初始化 Controller

转载 作者:行者123 更新时间:2023-12-04 08:26:15 26 4
gpt4 key购买 nike

我正在开发一个应用程序,我必须从详细信息页面插入一个返回导航链接到主页。两个 View 的 Controller 是不同的。我正在使用 $location.path('/')导航回主页。问题是,当我通过单击此链接导航返回时,我的主页 Controller 被重新初始化,这不是预期的行为。有没有办法在路由回同一链接时防止 Controller 重新初始化。

最佳答案

我假设您正在使用 AngularJS 内置的路由模块。如果有问题的 Controller 与路由相关联,那么只要路由匹配新位置,它将被初始化。你无法避免它。如果您不希望多次创建 Controller ,则应在 View 层次结构中将其定义在较高的位置。例如,主页的结构可能是这样的。

<html>
...
<body>
<div ng-controller="SharedController">
...
<ng-view></ng-view>
...
</div>
</body>
</html>

在这里, SharedController无论用户导航到哪个位置,都只会实例化一次。您可以移动 ng-viewdivSharedController 占用,尽管这会阻止范围继承工作,即 ng-view 中的范围在原型(prototype)上不会继承注入(inject)到 SharedController 中的作用域.

另一种选择是使用第三方库 ui-router 它引入了嵌套状态的概念。这样,您可以使用 Controller 构建父状态,该 Controller 仅在用户访问不同的子状态时实例化一次。

关于angularjs - 防止在 $location.path() 上重新初始化 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18900465/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com