【问题标题】:Unable to retrieve JSON array with AngularJS $resource无法使用 AngularJS $resource 检索 JSON 数组
【发布时间】:2020-04-09 06:22:57
【问题描述】:

我一直在尝试从 JSON 中检索值,但到目前为止没有成功。当我刷新页面时,它确实在前端被调用,但信息没有传递给下一个方法。我认为问题可能出在promises.push... 行,因为我试图调试下面的方法并且根本没有传递信息。

AngularJS:

var promises = [];
promises.push(SpringDataRestService.get({"collection": "subjects"}).$promise);

// Require each of these queries to complete before continuing
$q.all(promises).then(function (data) {
    // Grab the first result
    $scope.available = data[0].subjects;
    $scope.selected = [];
    // If this is an update, get the second result in set
    if (data.length > 1) {
        // For each permission that is assigned to this role, add ID (name) to selected
        for (var i = 0; i < data[1].data.subjects.length; i++) {
            var perm = data[1].data.subjects[i];
            $scope.selected.push(perm.name);
        }
    }
    $scope.tableEditOptions = new NgTableParams({}, {
        dataset: $scope.available
    });
   $scope.available, 'name');
}).catch(function (data) {
  // ERROR
});

JSON:

[
  {
    "name": "FWGWG",
    "description": "WGWGWG",
    "lockId": 0
  },
  {
    "name": "QFQFQF",
    "description": "QFQFQFQ",
    "lockId": 0
  }
]

我也确信我的 for 循环由于分配了值而出错,因为我认为它不应该是 data.subjects,但我知道这些线程每个问题只有 1 个问题。任何帮助将不胜感激。

【问题讨论】:

    标签: json angularjs spring ngresource


    【解决方案1】:

    对数组使用query 方法:

    var promise = SpringDataRestService.query({"collection": "subjects"}).$promise;
    
    promise.then(function (dataArr) {
        console.log(dataArr);
        //...
    }).catch(function (errorResponse) {
        console.log(errorResponse);        
    });
    

    对于 REST 服务,get 方法返回一个 JavaScript 对象,query 方法返回一个 JavaScript 数组。

    来自文档:

    $resource 退货

    一个资源“类”对象,其中包含默认资源操作集的方法,可以选择使用自定义操作进行扩展。 默认设置包含以下操作:

    {
      'get':    {method: 'GET'},
      'save':   {method: 'POST'},
      'query':  {method: 'GET', isArray: true},
      'remove': {method: 'DELETE'},
      'delete': {method: 'DELETE'}
    }
    

    ...

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

    有关详细信息,请参阅

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-06-12
      • 2015-07-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多