簡體   English   中英

如何在Angular JS的控制器中訪問JSON的子元素

[英]how do I access child elements of JSON in the controller in Angular JS

我不明白如何在我的控制器中將data.properties分配給$ scope之前等待資源調用完成。

這是我的困惑:

我有一個資源調用,返回此信息:

[
{
    "PreAlertInventory": "5.000000",
    "SharesInInventory": "3.000000",
    "TotalSharesSold": "2.000000",
    "TotalMoneySharesSold": "18.000000",
    "TotalSharesBought": "0.000000",
    "TotalShareCost": "0.000000",
    "EstimatedLosses": "0.000000"
}
]

這是來自控制器的適用代碼:

$scope.alertSwap = function () {

  var data = Data.query(); // gets the data. works as expected

  //$scope.test = data; //works as expected. can access data and properties in template
  $scope.test = data.TotalMoneySharesSold; //does not work. is empty???
}

我可以從模板BUT訪問數組及其屬性,而不是從控制器內部訪問。

如何從調用資源的控制器內部訪問子元素?

http://plnkr.co/edit/JnLqq4v7lKlYOHg85Jma?p=preview

回答:感謝所有幫助過的人:

我需要為資源調用分配一個回調,並從函數中分配元素:

$scope.data = Data.query(myParams, function(data) {
  $scope.test = data[0].TotalSharesBought;
});

您的數據似乎將作為數組返回,請嘗試$scope.testTwo = data[0].TotalSharesBought

我相應地更新了你的Plunkr

如上所述,您可能正在獲取這些數據異步。 我更新了您的代碼以支持promise(這會使您的代碼異步,並且可能不適合應用程序的其余部分)。

$timeout模擬異步調用。 在您的factory service

var deferred = $q.defer();
$timeout(function() {
    return deferred.resolve(data);
}, 100); // set it to zero to return immediately
return deferred.promise;

在您的controller調用工廠工廠方法query()並使用then掛鈎響應,這是片段的promise部分:

Data.query().then(function(response) {
  $scope.test = response[0].TotalMoneySharesSold;
});

http://plnkr.co/edit/SGGCVS?p=preview

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM