【问题标题】:ui-router state resolve entries are being evaluated twice when using an optional {parameter}使用可选的 {parameter} 时,ui-router 状态解析条目被评估两次
【发布时间】: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.loadresolve 条目是相互依赖的。如果从LoanPackageInstance 中删除LoanPackage 会发生什么?
  • 此外,从您的调试输出中,不能断定它是加载两次但解析的条目被评估两次的状态。
  • 嗨@akonsu,如果我从 LoanPackageInstance 中删除 LoanPackage,我将无法运行 LoanPackageInstance,因为它不能保证得到解决。我曾尝试将 LoanPackageInstance 放入 LoanPackage 的 promise.success 中,但得到了相同的结果。我现在正在尝试将dashboard.loan 作为另一个州进行并行处理。稍后我会回来报告,希望有好消息。对于被评估两次的已解决条目,您将如何查找或测试?
  • 嗨@akonsu,看来将dashboard.loan中的两个解析都放到另一个状态不会让它加载两次......所以我会尝试改写我的问题,但我没有现在真的不知道该怎么形容了。

标签: angularjs angular-ui-router


【解决方案1】:

这是 0.2.11 中的一个错误,应该在 0.2.12 中修复。

https://github.com/angular-ui/ui-router/issues/1396

【讨论】:

  • 克里斯,你是冠军!干杯
猜你喜欢
  • 1970-01-01
  • 2015-07-05
  • 1970-01-01
  • 1970-01-01
  • 2014-10-09
  • 1970-01-01
  • 2017-10-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多