Lou*_*dis 14 angularjs angularjs-scope angular-ui-router
我正在使用ui-router解析来从服务中获取一些数据.
问题是我需要从父$ scope获取一个值,以便调用服务,如下所示.
resolve: {
contactService: 'contactService',
contacts: function ($scope, contactService) {
return contactService.getContacts($scope.parentCtrl.parentObjectId);
}
}
Run Code Online (Sandbox Code Playgroud)
我一直在 Error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting!
还尝试了一些绝望的尝试,例如向解析对象添加范围,如下所示,但没有成功.
scope: $scope
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
iH8*_*iH8 19
这是不可能的,范围尚未在此时初始化,因此您无法在解析对象中使用它.初始化后,您可以在控制器中访问该范围.解决问题的关键在于它在控制器初始化之前运行,以便您可以注入并直接访问范围中已解析的项目.
如果需要将变量传递给下一个状态,可以使用$stateParams可用于解析的对象来执行此操作.您可以在更改状态时向其添加数据,例如:
在模板中,如果您的范围中有objectId:
<a ui-sref="statename({'id': objectId})">Change states</a>
Run Code Online (Sandbox Code Playgroud)
或者在您的控制器中:
$scope.go('statename', {'id': $scope.objectId});
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用以下命令检索解决方案$stateParams:
resolve: {
contactService: 'contactService',
contacts: function ($stateParams, contactService) {
return contactService.getContacts($stateParams.id);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10970 次 |
| 最近记录: |