gpt4 book ai didi

angularjs - 当链接被单击两次时,"ui-sref"不会刷新 "ui-view"(其 Controller 不会重新运行)

转载 作者:行者123 更新时间:2023-12-03 10:30:35 25 4
gpt4 key购买 nike

当一个状态被第一次点击时,拥有“ui-view”属性的 div 被该状态的"template"替换。但是,当我再次单击相同的状态时,它的 Controller 不会重新加载。我怎样才能让这个 Controller 再次加载?

例如,假设我有以下导航菜单:

<nav> 
<a ui-sref="state1">State 1</a>
<a ui-sref="state2">State 2</a>
</nav>

我的“ui-view”内容如下:
<div ui-view></div>

我的状态描述如下。当我单击导航菜单上的“State1”时,我希望观察到文本 "Ctrl 1 loaded"developer console .如果这是第一次,那么我会观察该文本。但是,当我重新单击同一个链接时, Controller 不会再次加载,即我看不到文本 "Ctrl 1 loaded"在控制台上显示两次。
myApp.config(function ($stateProvider, $urlRouterProvider){
$stateProvider.state("state1", {
url: "#",
template: "<p>State 1</p>",
controller: "Ctrl1"
}).state("state2", {
url: "#",
template: "<p>State 2</p>",
controller: "Ctrl2"
});
});

为什么?你有什么主意吗?

Here is the JSFiddle这个问题。

最佳答案

就像 Philipp 说的,这是因为这是 ui-router 的默认行为,但是如果您想每次单击链接时重新加载 Controller ,您实际上可以使用 ui-sref-opts 属性强制它,像这样:

<a ui-sref="state1" ui-sref-opts="{reload: true}">State 1</a>

在这里找到这个提示:

https://github.com/angular-ui/ui-router/commit/91a568454cc600aa4f34dedc8a80c9be1130b1c5

希望它可以帮助

关于angularjs - 当链接被单击两次时,"ui-sref"不会刷新 "ui-view"(其 Controller 不会重新运行),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25155624/

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