【发布时间】:2014-11-15 00:58:46
【问题描述】:
UI-Router 解析条目在使用 $state.go 或使用可选 {parameter} 时 ui-sref 时会重新加载两次,并且可选参数未填充。
.state('dashboard.loan', {
url: "/loan/:type/{instanceid}",
templateUrl: '/app/dashboard/views/package.html',
controller: 'PackageController',
controllerAs: 'packageCtrl',
resolve: {
UserAuth: session
}
})
// Resolves only once when both parameters are provided
$state.go( 'dashboard.loan',
{ packageType: packageType,
packageInstanceId: packageInstanceId } );
// Resolves twice when only one parameters is provided
$state.go( 'dashboard.loan',
{ packageType: packageType } );
我正在使用 ui-router v0.2.11。任何想法,似乎都找不到解决方案。
v0.2.11 解决方案 不要使用可选的大括号查询参数
【问题讨论】:
-
我调试的方法是这样的:将
dashboard.index的URL 更改为类似于dashboard.loan并查看它是否使dashboard.index加载两次。如果没有,则将类似的resolve条目一个一个添加到dashboard.index,看看这是否会导致它加载两次。之后,如果无法确定原因,请更新问题并尝试获得更多帮助。 -
另外,我注意到
index.load的resolve条目是相互依赖的。如果从LoanPackageInstance中删除LoanPackage会发生什么? -
此外,从您的调试输出中,不能断定它是加载两次但解析的条目被评估两次的状态。
-
嗨@akonsu,如果我从 LoanPackageInstance 中删除 LoanPackage,我将无法运行 LoanPackageInstance,因为它不能保证得到解决。我曾尝试将 LoanPackageInstance 放入 LoanPackage 的 promise.success 中,但得到了相同的结果。我现在正在尝试将dashboard.loan 作为另一个州进行并行处理。稍后我会回来报告,希望有好消息。对于被评估两次的已解决条目,您将如何查找或测试?
-
嗨@akonsu,看来将dashboard.loan中的两个解析都放到另一个状态不会让它加载两次......所以我会尝试改写我的问题,但我没有现在真的不知道该怎么形容了。
标签: angularjs angular-ui-router