加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – 将承诺传递给ngRepeat

发布时间:2020-12-17 07:57:21 所属栏目:安全 来源:网络整理
导读:所以,我看到了一个例子,他们将一个angualar传递给了ngRepeat并且工作正常.出于某种原因,当我设置此示例时,它不起作用.谁能告诉我为什么?如果您在没有延期的情况下分配数据,则可以正常工作,即$scope.objects = [{id:1} …] 非常感谢 Fiddle here !doctype h
所以,我看到了一个例子,他们将一个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: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对象,而不包含要传递以解析的数据.

查看更新的小提琴here.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读