angularjs – 在ui-router解析中使用$scope
发布时间:2020-12-17 09:16:03 所属栏目:安全 来源:网络整理
导读:我正在使用ui-router解析,以便从服务中获取一些数据. 事情是,我需要从父$scope获取一个值,以便调用服务,如下所示. resolve: { contactService: 'contactService',contacts: function ($scope,contactService) { return contactService.getContacts($scope.pa
我正在使用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); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |