因此,我看到了一个示例,其中他们将延迟的angualar传递到ngRepeat中,并且效果很好。由于某些原因,当我设置此示例时,它不起作用。谁能告诉我为什么?如果您分配的数据没有延迟,则可以正常工作,即$scope.objects = [{id:1}...] 非常感谢 小提琴在这里
$scope.objects = [{id:1}...]
<!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对象,而应使用文档then中所述的回调。
then
这意味着您
$scope.objects = dataService.getData();
而是应该像
dataService.getData().then(function(data) { $scope.objects = data; });
否则,您$scope.objects将包含promise对象,而不包含要传递给的数据resolve。
$scope.objects
resolve
在这里查看更新的小提琴。