Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs &引用;用户界面sref“;不刷新";“用户界面视图”;(其控制器不会重新运行)当链接被单击两次时_Angularjs_Angular Ui_Angular Ui Router - Fatal编程技术网

Angularjs &引用;用户界面sref“;不刷新";“用户界面视图”;(其控制器不会重新运行)当链接被单击两次时

Angularjs &引用;用户界面sref“;不刷新";“用户界面视图”;(其控制器不会重新运行)当链接被单击两次时,angularjs,angular-ui,angular-ui-router,Angularjs,Angular Ui,Angular Ui Router,首先单击某个状态时,拥有“ui视图”属性的div将替换为该状态的“模板”。但是,当我再次单击相同的状态时,它的控制器不会重新加载。如何使此控制器再次加载 例如,假设我有以下导航菜单: <nav> <a ui-sref="state1">State 1</a> <a ui-sref="state2">State 2</a> </nav> 为什么??你知道吗 因为这就是ui路由器的设计方式 控制器仅在不处于相

首先单击某个状态时,拥有“ui视图”属性的div将替换为该状态的“模板”。但是,当我再次单击相同的状态时,它的控制器不会重新加载。如何使此控制器再次加载

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

<nav> 
    <a ui-sref="state1">State 1</a>
    <a ui-sref="state2">State 2</a>
</nav>
为什么??你知道吗


因为这就是ui路由器的设计方式

控制器仅在不处于相同状态时加载。ui路由器不会重新运行控制器,也不会重新评估视图模板。 即使在多个状态上使用同一控制器并在这些状态之间切换,控制器也不会重新运行


如果您想在a视图更改时运行功能,您可以,甚至可以在
a
元素上单击
ng

正如Philipp所说,这是因为这是ui路由器的默认行为,但是如果您想在每次单击链接时重新加载控制器,实际上,您可以使用ui sref opts属性强制执行,如下所示:

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


希望它能帮助你找到另一种不同的观点

<a ui-sref="state1({reload: true})">State 1</a>
注意:$state.go的第二个参数是$stateParams

只需使用下面的代码

$stateProvider.
  state('myPage', {
    url: '/',
    cache: false // add this line

谢谢你的回复。如何使用ng click再次调用该函数?@ankakusu您可能必须在控制器中设置一个侦听器,并从
ng click
发出一个事件,更多信息。ng click事件也被抑制。我将ng click事件绑定到状态1。即使我单击了该项目,也不会触发ng click事件。您可以从中进行检查。@ankakusu
Ctrl1
仅控制
ui视图
下的元素,
单击在
Ctrl1
范围内定义的
仅在从视图中调用if时才会触发。如果您使用此功能,并在带有
$emit
(单击)和
$on
(在
Ctrl1
的作用域上)的作用域上使用消息,您可以在
Ctrl1
的作用域上接收事件。创建新的主页它工作不正常。请建议我,我们应该如何更改它…我如何在整个应用程序中执行此操作?ui sref opts=“{reload:true}”对我也不起作用,并且它没有重新加载控制器。只有v0.2.5更高版本支持重新加载功能。对我来说,这是另一种方式,
ui-sref-opts
有效,但将
reload:true
传递到
ui-sref
中的状态不起作用!有这个问题的其他人,我建议你也试试。你用的是什么版本的angular?
<a ui-sref="state1({reload: true})">State 1</a>
$state.go('state1', {}, {reload: true});
$stateProvider.
  state('myPage', {
    url: '/',
    cache: false // add this line