使用多个服务的AngularJS指令

比尤森

更新

我的控制器从两个服务加载数据,并且在其中一个服务返回了数据之前已链接了该伪指令。因此,我认为我需要找到一种方法来防止在实际填充第二个服务中的变量之前加载指令。

处理该问题的最佳方法是什么?

原始问题:

我有一个对象数组的作用域,也有一个整数。因此,在控制器中,如下所示:

$scope.array = [
    {title: 'foo', first: 'spam', second: 'eggs'}, 
    {title: 'bar', first: 'maps', second: 'sgge'}
];
$scope.another = 400;

我正在使用ngRepeat将值从数组中的每个对象传递给指令,如下所示:

<div ng-repeat="a in array" 
     my-directive="a.title" 
     my-first-val="a.first" 
     my-second-val="a.second"></div>

我还想绑定另一个值,该值对于指令的所有实例都是相同的,但也可能会更改:

<div ng-repeat="a in array" 
     my-directive="a.title" 
     my-first-val="a.first" 
     my-second-val="a.second"
     another-val="another"></div>

这个最终值似乎从未正确绑定[实际上,它没有绑定,因为它尚未填充-这里使用的语法很好]。这可能吗?还有另一种方法可以使用ngRepeat将单个值绑定到指令的所有实例吗?

圣马克

要回答您的最新问题,建议您使用$ q承诺。您可以使用promise来加载每个服务的数据,然后使用all方法来组合2。

var promise1 = arrayService.getArray();
var promise2 = anotherService.getAnother();
var promise = $q.all([promise1, promise2]);
promise.then(function(data) {
  $scope.array = data[0];
  $scope.another = data[1];
});

编辑:我从您的评论中了解到,您想知道如何通过服务返回承诺。“ arrayService”服务中的代码

angular.module('yourApp').service('arrayService', function($q, someAsyncService) {
  this.getArray = function() {
    var deferred = $q.defer();
    someAsyncService.get(function(err, data){
      if (err) {
        deferred.reject(err);
      }
      else {
        deferred.resolve(data);
      }
    });
    return deferred.promise;
  };

});

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用多个服务的AngularJS指令

来自分类Dev

如何使用 angularjs 指令中的内置服务?

来自分类Dev

在Angularjs中的require中使用多个指令

来自分类Dev

AngularJS指令多个视图

来自分类Dev

如何使用angularjs中的服务数据正确构造/更新指令?

来自分类Dev

AngularJS-如何在指令中使用服务

来自分类Dev

如何使用angularjs中的服务数据正确构造/更新指令?

来自分类Dev

使用服务时AngularJS无法正确加载指令

来自分类Dev

在一个div标签中使用多个AngularJS指令

来自分类Dev

对多个输入使用相同的指令。这是可能的?AngularJS

来自分类Dev

AngularJS指令,按指令属性调用服务

来自分类Dev

AngularJS:从指令访问ngTouch服务?

来自分类Dev

AngularJS:将服务注入指令?

来自分类Dev

AngularJS +指令:多个被包含的元素

来自分类Dev

AngularJS多个指令要求ngModel

来自分类Dev

使用服务内部指令?

来自分类Dev

AngularJS IF指令使用列

来自分类Dev

AngularJS使用子指令作为指令数据

来自分类Dev

AngularJS使用子指令作为指令数据

来自分类Dev

AngularJS使用指令($ compile)并使用单例服务动态创建元素

来自分类Dev

何时使用指令,何时提供服务以及何时在angularjs中使用控制器?

来自分类Dev

AngularJS。将服务作为指令的参数传递

来自分类Dev

AngularJS:将服务值绑定到指令

来自分类Dev

ng-repeat中的angularjs指令服务

来自分类Dev

调用服务方法后AngularJs更新指令

来自分类Dev

在AngularJS中使用$ http服务发布多个数组

来自分类Dev

AngularJs:多个指令要求隔离范围

来自分类Dev

AngularJS错误-[$ compile:multidir]多个指令错误

来自分类Dev

带有多个模板的AngularJS指令

Related 相关文章

热门标签

归档