我正在使用ui-router解析,以便从服务中获取一些数据.
事情是,我需要从父$scope获取一个值,以便调用服务,如下所示.
resolve: { contactService: 'contactService',contacts: function ($scope,contactService) { return contactService.getContacts($scope.parentCtrl.parentObjectId); } }
我不断得到错误:[$rootScope:infdig]达到$$digest()迭代.中止!
还尝试了一些绝望的尝试,例如向resolve对象添加范围,如下所示,没有成功.
scope: $scope
有任何想法吗?
这是不可能的,范围还没有被初始化,所以你不能在resolve对象中使用它.初始化后,您可以访问控制器中的范围.整个解决方案是在控制器初始化之前运行,以便您可以注入并直接访问范围中已解决的项目.
如果您需要将变量传递给下一个状态,则可以使用可用于解析的$stateParams对象来执行此操作.更改状态时可以添加数据,例如:
在您的模板中,如果您的范围中有一个objectId:
<a ui-sref="statename({'id': objectId})">Change states</a>
或在您的控制器:
$scope.go('statename',{'id': $scope.objectId});
然后,您可以通过使用$stateParams在您的解决中检索:
resolve: { contactService: 'contactService',contacts: function ($stateParams,contactService) { return contactService.getContacts($stateParams.id); } }