为什么我无法在解决范围内访问params?

时间:2013-12-01 19:56:12

标签: angularjs angular-ui-router

我有一个显示页面,我希望在显示此页面之前确保数据可用。我的理解是在路由中使用resolve属性是最好的方法。但是使用ui-router我无法访问$ state.params中的属性。有没有办法解决这个问题,或者我应该只是查询控制器中的对象?我做了一个简单的plunkr来证明这个问题。 http://plnkr.co/edit/cSgExy7QOpjx7jEEV7v0?p=preview

2 个答案:

答案 0 :(得分:2)

根据文档,您应该在决心中引用$stateParams,而不是$state.params。此外,Plunkr因为您正在注入您未包含在摘录中的服务(Tournament)而被破坏。这很好用:

resolve: { 
  tournament:  function($stateParams) {
    console.log($stateParams)  // Prints { tournament_id: 1 }
  }
}

答案 1 :(得分:0)

似乎param对象的填充速度不够快。

如果您将警报包含在resolve函数中,并且超时为0毫秒,那么它似乎可以正常工作。

我没有任何使用角度ui路由器的经验,但我认为它与仍在处理的摘要周期有关,超时会强制警报等到摘要周期完成。