因此,我看到了一个示例,其中他们将延迟的angualar传递到ngRepeat中,并且效果很好。由于某些原因,当我设置此示例时,它不起作用。谁能告诉我为什么?如果您分配的数据没有延迟,则可以正常工作,即$scope.objects = [{id:1}...]
非常感谢
Fiddle here
<!doctype html>
<html ng-app="app">
<head>
</head>
<body>
<testlist/>
<script src="/lib/angular/angular.js"></script>
<script>
var app = angular.module('app', []);
app.factory('dataService', function ($q) {
return {
getData : function () {
var deferred = $q.defer();
setTimeout(function () {
deferred.resolve([{id:1},{id:2},{id:3},{id:4}]);
},0);
return deferred.promise;
}
};
});
app.directive('testlist', ['dataService', function(dataService) {
return {
restrict: 'E',
replace: true,
scope : {},
template: '<div ng-repeat="data in objects">{{inspect(data)}}{{data.id}}</div>',
controller: function($scope) {
$scope.objects = [{id:1},{id:2},{id:3},{id:4}];
$scope.inspect = function (obj) {
console.log(obj)
}
}
}
}]);
</script>
</body>
</html>
最佳答案
我认为您不能直接使用Promise对象,应该使用documentation中所述的then
回调。
这意味着您
$scope.objects = dataService.getData();
而是应该像
dataService.getData().then(function(data) {
$scope.objects = data;
});
否则,您的
$scope.objects
将包含promise对象,而不包含要传递给resolve
的数据。请参阅更新的 fiddle here。
关于angularjs - 将 promise 传递给ngRepeat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21337666/