angularjs – ui-router – 重新加载当前状态

前端之家收集整理的这篇文章主要介绍了angularjs – ui-router – 重新加载当前状态前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想知道如何“重新加载”当前状态,传入一个新的参数,以便我的控制器被重新初始化。

我试图在我的边栏控件中实现搜索,而最初的搜索使用$ state.go来转换到我的新状态,如下所示:

if ($event.type === 'click' || $event.keyCode === keyCodes.enter) {
     $state.go("people.search",{ search: vm.searchText });

如果我在应用程序中处于另一个状态,并且上面的代码运行,一切正常。所以,我作为一个参数传入搜索词,$ state.go将我的状态转换到people.search状态,我的人员控制器(包含搜索功能)被命中。但是一旦我在people.search状态,并尝试使用搜索控件,人员控制器代码不再受到打击,参数没有被更新。

我尝试修改代码

$state.go("people.search",{ search: vm.searchText },{ location: "replace" });

现在当我处于当前状态时,这将更新我的新搜索字词的URL,但是控制器代码没有触发。

我需要一种强制重新加载与我目前相同状态的方法,以便新的搜索参数得到更新,人员控制器代码重新运行。

如何重新加载当前状态?

内部javascript您可以像这样调用当前状态:

$ state.go(‘。’,{search:vm.searchText})

从版本1.2.5开始,您也可以只使用重新加载状态:

$ state.reload()

这很好,但我更喜欢一种方式来重新加载一个指令中不同参数的状态。
所以我看了ui路由器的源代码只是为了了解当uiSref指令在状态保持不变时被忽略。虽然如果没有真正改变,防止重新加载是很好的,在某些情况下,更改状态中的参数可能会很有用。

所以我创建了我自己的指令uiSrefParams:
https://gist.github.com/IlanFrumer/8281567

<span>Change language:</span>
<a ui-sref-params="{lang: 'en'}">english</a>
<a ui-sref-params="{lang: 'ru'}">russian</a>

希望有帮助。

原文链接:https://www.f2er.com/angularjs/144141.html

猜你在找的Angularjs相关文章