gpt4 book ai didi

angularjs - 在 ui-router 解析中使用 $scope

转载 作者:行者123 更新时间:2023-12-03 21:53:02 25 4
gpt4 key购买 nike

我正在使用 ui-router resolve 从服务中获取一些数据。

问题是我需要从父 $scope 获取一个值才能调用服务,如下所示。

resolve: {
contactService: 'contactService',
contacts: function ($scope, contactService) {
return contactService.getContacts($scope.parentCtrl.parentObjectId);
}
}

我不断收到 Error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting!
还尝试了一些绝望的尝试,例如向解析对象添加范围,如下所示,但没有成功。
scope: $scope

有任何想法吗?

最佳答案

那是不可能的,此时范围尚未初始化,因此您无法在解析对象中使用它。初始化后,您可以访问 Controller 中的范围。解析的全部意义在于它在 Controller 初始化之前运行,以便您可以注入(inject)并直接访问范围内已解析的项目。

如果您需要将变量传递到下一个状态,您可以使用 $stateParams 来完成。可用于解析的对象。您可以在更改状态时向其添加数据,例如:

在您的模板中,如果您的范围中有 objectId:

<a ui-sref="statename({'id': objectId})">Change states</a>

或在您的 Controller 中:
$scope.go('statename', {'id': $scope.objectId});

然后,您可以使用 $stateParams 在您的解析中检索它。 :
resolve: {
contactService: 'contactService',
contacts: function ($stateParams, contactService) {
return contactService.getContacts($stateParams.id);
}
}

关于angularjs - 在 ui-router 解析中使用 $scope,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29298699/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com