【问题标题】:Not able to select JSON index when using ngResource in factory在工厂中使用 ngResource 时无法选择 JSON 索引
【发布时间】:2016-06-08 06:44:24
【问题描述】:

factory 中的ngResource 工作正常,但不幸的是结果能够选择JSON 索引。同时可以绑定同一个$scope.resultItems变量

控制台日志是这样的????

无法从 ngResource http://codepen.io/anon/pen/dMbRXx 工作

变量http://codepen.io/anon/pen/ONLgNX工作正常

var app = angular.module('app', ['ngResource']);
app.controller('myCtrl', function($scope, categoryFilter) {
  $scope.resultItems = categoryFilter.query();
  $scope.resultIndex = $scope.resultItems[0];
  $scope.resultIndexItem = $scope.resultItems[0].status;
});
app.factory('categoryFilter', function($resource) {
  return $resource("https://maps.googleapis.com/maps/api/geocode/json?address=NY", {}, {
    query: {
      method: "GET"
    }
  });
});
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet">
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.3.14/angular.min.js"></script>
<script src="http://cdnjs.cloudflare.com/ajax/libs/angular-resource/1.5.0/angular-resource.min.js"></script>

<div class="container" ng-app="app" ng-controller="myCtrl">
  <div class="col-xs-12">
    <h3>ngResource result</h3>
    <pre>{{resultItems | json }}</pre>
    <hr />
    <pre>{{resultIndex | json }}</pre>
    <hr />
    <pre>{{resultIndexItem | json}}</pre>
  </div>
</div>

【问题讨论】:

    标签: javascript angularjs json ngresource angularjs-factory


    【解决方案1】:

    每个资源实际上都是一个ajax请求,这意味着它是异步的,所以你必须使用回调到query函数。然后你的代码看起来像这样

    var app = angular.module('app', ['ngResource']);
    app.controller('myCtrl', function($scope, categoryFilter) {
      categoryFilter.query(function(results){
        $scope.resultItems  = results;
        $scope.resultItems.results[0];
    $scope.resultIndexItem = $scope.resultItems.status;
      });    
    });
    app.factory('categoryFilter', function($resource) {
      return $resource("https://maps.googleapis.com/maps/api/geocode/json?address=NY", {}, {
        query: {
          method: "GET"
        }
      });
    });
    

    link

    更新

    对不起,如果我错过了你的问题,{} 中的所有 json 项目都将是一个可以使用 . 访问的对象,例如在 json 中 resultsstatus 是对象,而项目在 @987654333 中表示@ 是一个数组,可以使用索引访问它们。

    来自json

    【讨论】:

    • 问题是选择json索引例如$scope.resultItems[0]$scope.resultItems[0].status
    猜你喜欢
    • 2018-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-22
    • 1970-01-01
    • 2020-12-28
    • 1970-01-01
    相关资源
    最近更新 更多