Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 为什么可以';我不能在resolve中访问参数吗?_Angularjs_Angular Ui Router - Fatal编程技术网

Angularjs 为什么可以';我不能在resolve中访问参数吗?

Angularjs 为什么可以';我不能在resolve中访问参数吗?,angularjs,angular-ui-router,Angularjs,Angular Ui Router,我有一个显示页面,我想在显示此页面之前确保数据可用。我的理解是,在路由中使用resolve属性是实现这一点的最佳方法。但是,使用ui路由器,我无法访问$state.params中的属性。有没有办法解决这个问题,或者我应该只是在控制器中查询对象?我做了一个简单的撞击来演示这个问题 看来param对象的填充速度不够快 如果将警报包装在resolve函数中,超时时间为0毫秒,则警报似乎可以正常工作 我对angular ui router没有任何经验,但我认为它与摘要周期仍在处理有关,超时会迫使警报等待

我有一个显示页面,我想在显示此页面之前确保数据可用。我的理解是,在路由中使用resolve属性是实现这一点的最佳方法。但是,使用ui路由器,我无法访问$state.params中的属性。有没有办法解决这个问题,或者我应该只是在控制器中查询对象?我做了一个简单的撞击来演示这个问题

看来param对象的填充速度不够快

如果将警报包装在resolve函数中,超时时间为0毫秒,则警报似乎可以正常工作


我对angular ui router没有任何经验,但我认为它与摘要周期仍在处理有关,超时会迫使警报等待摘要周期完成。

根据文档,您应该在解析中引用
$stateparms
,而不是
$state.params
。此外,Plunkr被破坏是因为您正在注入一项服务(
锦标赛
),而您的摘录中没有包含该服务。这很好:

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

问题是控制器在$timeout运行之前实例化,因此只在控制器中执行查询会更快。使用resolve的目的是确保在实例化控制器之前拥有所需的数据。