Angularjs 为什么可以';我不能在resolve中访问参数吗?
我有一个显示页面,我想在显示此页面之前确保数据可用。我的理解是,在路由中使用resolve属性是实现这一点的最佳方法。但是,使用ui路由器,我无法访问$state.params中的属性。有没有办法解决这个问题,或者我应该只是在控制器中查询对象?我做了一个简单的撞击来演示这个问题 看来param对象的填充速度不够快 如果将警报包装在resolve函数中,超时时间为0毫秒,则警报似乎可以正常工作Angularjs 为什么可以';我不能在resolve中访问参数吗?,angularjs,angular-ui-router,Angularjs,Angular Ui Router,我有一个显示页面,我想在显示此页面之前确保数据可用。我的理解是,在路由中使用resolve属性是实现这一点的最佳方法。但是,使用ui路由器,我无法访问$state.params中的属性。有没有办法解决这个问题,或者我应该只是在控制器中查询对象?我做了一个简单的撞击来演示这个问题 看来param对象的填充速度不够快 如果将警报包装在resolve函数中,超时时间为0毫秒,则警报似乎可以正常工作 我对angular ui router没有任何经验,但我认为它与摘要周期仍在处理有关,超时会迫使警报等待
我对angular ui router没有任何经验,但我认为它与摘要周期仍在处理有关,超时会迫使警报等待摘要周期完成。根据文档,您应该在解析中引用
$stateparms
,而不是$state.params
。此外,Plunkr被破坏是因为您正在注入一项服务(锦标赛
),而您的摘录中没有包含该服务。这很好:
resolve: {
tournament: function($stateParams) {
console.log($stateParams) // Prints { tournament_id: 1 }
}
}
问题是控制器在$timeout运行之前实例化,因此只在控制器中执行查询会更快。使用resolve的目的是确保在实例化控制器之前拥有所需的数据。