加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-17 08:06:24 所属栏目:安全 来源:网络整理
导读:我想知道如何“重新加载”当前状态,传入一个新的参数,以便我的控制器被重新初始化。 我试图在我的边栏控件中实现搜索,而最初的搜索使用$ state.go来转换到我的新状态,如下所示: if ($event.type === 'click' || $event.keyCode === keyCodes.enter) { $
我想知道如何“重新加载”当前状态,传入一个新的参数,以便我的控制器被重新初始化。

我试图在我的边栏控件中实现搜索,而最初的搜索使用$ 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>

希望有帮助。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读