我在互联网上看,但没有看到明确的答案。所以这是我的情况:
代码是由头写的,所以没有完成的借口 我有一个看起来像这样的页面:
<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中,并设置了可设置的延迟。
这是正确的方法还是有更好的方法?
答案 0 :(得分:1)
嗯,这根本不起作用:
$scope.directiveCallback = function(item) {
apiResponse.then(function() {
console.log($scope.data); // always updated
// do whatever
})
}