我想知道如何使用不同的$stateParam
?
我试图继续:
$state.go('^.currentState({param: 0})')
然而,它没有用。
答案 0 :(得分:10)
params是go()
方法的第二个参数
$state.go('^.currentState', {param: 0})
转换到新状态的便捷方法。 $ state.go在内部调用$ state.transitionTo但自动将选项设置为{location:true,inherit:true,relative:$ state。$ current,notify:true}。这允许您轻松使用绝对路径或相对路径,并仅指定您要更新的参数(同时让未指定的参数从当前活动的祖先状态继承)。
答案 1 :(得分:4)
在我的情况下,我想重新加载相同的状态,但使用不同的参数。 (在此特定事件中null
)
情况如下:我们有一个不同公司的网站,每个公司都有自己的品牌页面。您可以访问其他公司'页面和那里有一个快速访问您自己的菜单条目。
公司的页面位于/company/somecompanyid
下,而访问/company
时将加载您自己的页面。没有添加id。或代码中的company_id: null
。
问题
当您查看随机公司的页面时,让我们说company/123456
,然后点击指定的菜单条目访问您自己的页面,不会发生任何事情!
Ui-router相信你是在同一条路线上,只是让你在那里。
解决方案
将以下内容添加到模板中:
<a ui-sref="company" ui-sref-opts="{reload: true, inherit: false}" ... ></a>
它做了什么?
reload: true
这将迫使您的州重新加载。但它会复制您当前的路线参数。这意味着您仍然可以看到其他公司的页面。
inherit: false
将inherit
属性设置为false
会强制ui-router使用您提供的参数。在我的情况下,companyId是null
并且加载了用户的个人页面。欢呼!
您可以在文档页面上找到所有ui-sref-options。 ui-sref-options
答案 2 :(得分:4)
您可能想要使用这段代码:
<a ui-sref=".({param: 0})"></a>
&#13;
无需使用控制器。
答案 3 :(得分:1)
如果您想重新加载状态,还可以使用ui-sref-opts。传入reload: true
选项,将重新加载当前状态。
<a ui-sref-opts="{reload:true}" ui-sref="app.post.applicants">Applicants</a>
答案 4 :(得分:0)
最简单的解决方案是 - &gt;
您可以使用相同的控制器和相同的html页面制作2状态并逐个重定向
PROS:无需处理历史记录,所有工作都适用于流程
.state('app.productDetails', {
url: '/productDetails',
cache: false,
views: {
'menuContent': {
templateUrl: 'src/products/productDetails/productDetails.html',
controller: 'ProductDetailsCtrl'
}
},
params: {
productID: 0,
modelID: 0
}
})
.state('app.modelDetails', {
url: '/modelDetails',
cache: false,
views: {
'menuContent': {
templateUrl: 'src/products/productDetails/productDetails.html',
controller: 'ProductDetailsCtrl'
}
},
params: {
productID: 0,
modelID: 0
}
})
答案 5 :(得分:0)
$state.go('.', {param: someId});