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

前端之家收集整理的这篇文章主要介绍了angularjs – 在ui-router解析中使用$scope前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用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);
    }
}

猜你在找的Angularjs相关文章