处理mutliple promisses时最好的方法

时间:2018-02-27 10:59:21

标签: angularjs callback directive

我在互联网上看,但没有看到明确的答案。所以这是我的情况:

代码是由头写的,所以没有完成的借口 我有一个看起来像这样的页面:

<div ng-controller="myController">
    <my-customer my-callback="directiveCallback(item)" />
</div>

然后我有一个看起来像这样的脚本:

var app = angular.module('myApp', []);
app.controller('myController', ['$scope', 'apiService', function($scope, apiService) {

    apiResponse = apiService.getAll('myRepo');

    apiResponse.then(function(d){
     $scope.data = d;   
    })

    $scope.directiveCallback = function(item) {

        // do stuff with $scope.data
    }

  }])
  .directive('myCustomer', function() {
    return {
        scope: {
            myCallback:'&'
        },
      template: 'Name: {{customer.name}} Address: {{customer.address}}'
    };
  });

事情是服务承诺解决并返回一些数据。 指令控制器正在调用另一个返回某些数据的服务,并在完成它所回收的数据时触发回调。

当他登陆回调函数时,该项目附加到$ scope.data。

问题是在填充$ scope.data之前触发了回调。 我非常理解这一点,以便通过direcitve参数将回调包含在$ timeout中,并设置了可设置的延迟。

这是正确的方法还是有更好的方法?

1 个答案:

答案 0 :(得分:1)

嗯,这根本不起作用:

$scope.directiveCallback = function(item) {
  apiResponse.then(function() {
    console.log($scope.data); // always updated
    // do whatever
  })
}