我这里有一个烦人的问题,需要帮助。
我有一个控制器,可从Yahoo股票中获取股票数据。控制器将数据存储在$ scope.stocks中,在我看来,我可以使用ng-repeat显示数据,因此一切正常。当我尝试从数据的每个元素中提取一些数据时,问题就来了……它说对象未定义。
下面是执行提取的我的控制器。

    app.controller('controller2', ['$scope','$resource', function($scope, $resource){
    var URL='http://finance.yahoo.com/webservice/v1/symbols/allcurrencies/quote?format=json';
    $scope.stockAPI=$resource(URL, {callback: 'JSON_CALLBACK'},{get:{method:'JSONP'}});
    $scope.stocks=$scope.stockAPI.get({});
    console.log($scope.stocks);
    var temp=$scope.stocks.list.resources;  // this returns an error (TypeError: Cannot read property 'resources' of undefined)
    console.log(temp);

}]);


我使用该控制器的视图如下所示(该视图还显示了我想要的数据)

    <body ng-app="weatherApp" class="container">
    <div ng-controller="controller2" ng-model="buffer">
        <h1>This is the index page where the application is mounted</h1>
        <ul ng-repeat="stock in stocks.list.resources">
            <li>{{stock.resource.fields.name}}  {{stock.resource.fields.price}} {{buffer.push(stock.resource.fields.name)}}</li>
        </ul>
    </div>
</body>


我从控制器获取的json数据如下所示,该视图可以很好地呈现它,但是我无法创建一个新列表,该列表仅包含对象的每个元素中包含的多个字段中的三个字段。 ..请帮助这让我沮丧了两天。

$ promise:d

$ resolved:是

list: Object

 meta: Object

  resources: Array[173]

      [0 … 99]

      [100 … 172]

      length: 173

      __proto__: Array[0]

  __proto__: Object


原型:e

最佳答案

您应该传递一个函数,然后在该函数内设置$scope.stocks

$scope.stockAPI.get({}, function(data){
   $scope.stocks = data;
});


否则,您可以使用$promise,然后在$scope.stocks函数中更新.then

$scope.stockAPI.get().$promise.then(function(data){
   $scope.stocks = data;
});

关于javascript - 如何在angularJS中解析$ resource对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31925502/

10-12 14:03
查看更多