Pac*_*der 16 angularjs angular-ui-router
我想知道如何"重新加载"当前状态,传入一个新参数,以便我的控制器重新初始化.
我试图在我的侧边栏控件中实现搜索 - 初始搜索使用$ state.go转换到我的新状态,如下所示:
if ($event.type === 'click' || $event.keyCode === keyCodes.enter) {
$state.go("people.search", { search: vm.searchText });
Run Code Online (Sandbox Code Playgroud)
如果我在应用程序中的另一个状态,并且上面的代码运行,一切正常.所以,我将搜索词作为参数传递,$ state.go将我的状态转换为people.search状态,我的人员控制器(包含搜索功能)被点击.但是一旦我在people.search状态并尝试使用搜索控件,人员控制器代码就不再受到攻击而且参数没有得到更新.
我尝试将代码修改为:
$state.go("people.search", { search: vm.searchText }, { location: "replace" });
Run Code Online (Sandbox Code Playgroud)
现在,当我处于当前状态时,这将使用我的新搜索词更新URL,但控制器代码未触发.
我需要一种方法来强制重新加载我当前所处的相同状态,以便更新新的搜索参数并重新运行人员控制器代码.
如何重新加载当前状态?
Ila*_*mer 14
在javascript里面你可以像这样调用当前状态:
$state.go ('.', { search: vm.searchText } )
从版本1.2.5开始,您也可以使用重新加载状态:
$state.reload()
这一切都很好,但我更喜欢用指令中的不同参数重新加载状态的方法.所以我查看了ui-router源代码,只是为了理解当状态保持不变时忽略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>
Run Code Online (Sandbox Code Playgroud)
希望有所帮助.
| 归档时间: |
|
| 查看次数: |
15315 次 |
| 最近记录: |