ng-resource调用完成后更新ng-repeat

时间:2016-06-23 11:42:10

标签: javascript angularjs angular-resource

我正在将ngResource与ng-repeat结合使用,并注意到慢速REST调用不能正确更新列表。它一直是空的。

据我所知,我需要控制器和ng-repeat元素之间的绑定。

我的资源和控制器定义:

(function (configure) {
    configure('loggingResource', loggingResource);

    function loggingResource($resource, REST_CONFIG) {
        return {
            Technical: $resource(REST_CONFIG.baseUrl + REST_CONFIG.path + '/', {}, {
                query: {
                    method: 'GET',
                    isArray: true
                }
            })
        };
    }
})(angular.module('loggingModule').factory);

(function (configure) {
    configure('logController', logController);

    function logController(loggingResource) {
        var that = this;
        loggingResource.Technical.query(function (data) {
            that.logs = data;
        });
        //that.logs = loggingResource.Technical.query();
    }
})(angular.module('loggingModule').controller);

ng.repeat用法:

<tr class="table-row" ng-repeat="log in logController.logs">

到目前为止我尝试过:

  • ng-bindng-repeat
  • 组合使用
  • $q with deferrer
  • $promise ngResource

我错过了什么?

我尝试在plnkr上获取它:https://plnkr.co/edit/t1c5Pxi7pzgocDMDNITX

2 个答案:

答案 0 :(得分:0)

尝试使用

<?php

Car $car = new Car();
$car->hello();

class Car{

  public function hello(){
      echo  'Hello';
  }
}

因此您可以阻止重新初始化日志列表。如果覆盖日志列表并且在日志列表之前初始化ng-repeat,则似乎无法解析。 在其余呼叫后,您的日志列表是否设置正确?

答案 1 :(得分:0)

{{}}在您的控制器和视图之间提供默认绑定,您不需要明确添加任何内容。我已经更新了你的plunkr对注入的常量等的一些小改动,它正在工作。

// Code goes here
angular.module("loggingModule", ['ngResource']);

(function(configure) {
  configure('loggingResource', loggingResource);

  function loggingResource($resource) {
    return {
      Technical: $resource('https://api.github.com/users/addi90/repos', {}, {
        query: {
          method: 'GET',
          isArray: true
        }
      })
    };
  }
})(angular.module('loggingModule').factory);

(function(configure) {
  configure('logController', logController);

  function logController(loggingResource) {
    var that = this;
    that.logs = [{
      title: 'test2'
    }];
    loggingResource.Technical.query(function(data) {
      that.logs = data;
    });
    //that.logs = loggingResource.Technical.query();
  }
})(angular.module('loggingModule').controller);

由于api资源不起作用,我在那里使用了我的github repo api链接

更新的工作plunkr可在此处获取:https://plnkr.co/edit/cederzcAGCPVzc5xTeac?p=preview