AngularJS ngResource $ resource query()返回Empty

时间:2016-12-11 00:57:37

标签: angularjs angular-promise angularjs-resource

我正在尝试从服务器上传文件,但文件没有显示。对服务器的调用是从这段代码启动的:

'use strict';

angular.
module('phoneList').
component('phoneList', {
  templateUrl: 'phone-list/phone-list.template.html',
  controller: ['Phone',
    function PhoneListController(Phone) {
      this.phones = Phone.query();
      this.orderProp = 'age';
      console.log(this.phones);
    }
  ]
});

该服务称之为:

'use strict';

angular.
module('core.phone').
factory('Phone', ['$resource',
  function($resource) {
    return $resource('phones/:phoneId.json', {}, {
      query: {
        method: 'GET',
        params: {
          phoneId: 'phones'
        },
        isArray: true
      }
    });
  }
]);

返回代码为200,随后为304,表示上传成功。但是早期代码段中的console.log语句不会在控制台中显示电话。

1 个答案:

答案 0 :(得分:1)

要记录结果,请使用$promise对象的$resource属性:

angular.
module('phoneList').
component('phoneList', {
  templateUrl: 'phone-list/phone-list.template.html',
  controller: ['Phone',
    function PhoneListController(Phone) {
      this.phones = Phone.query();
      this.orderProp = 'age';
      //console.log(this.phones);
      //USE $promise property
      this.phones.$promise.then(function(phones) {
          console.log(phones);
      }).catch(function (error) {
          console.log("ERROR " + error.status);
      });
    }
  ]
});

重要的是要意识到调用$resource对象方法会立即返回一个空引用(对象或数组,具体取决于isArray)。从服务器返回数据后,将使用实际数据填充现有引用。

通过使用.then属性的$promise方法,$ q服务会延迟console.log,直到数据从服务器返回。