0

我不明白如何在我的控制器中将 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???
}

我可以从模板访问数组及其属性,但不能从控制器内部访问。

如何从调用资源的控制器内部访问子元素?

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

回答:感谢所有帮助过的人:

我需要为资源调用分配回调,并从函数内分配元素:

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

2 回答 2

1

您的数据似乎以数组形式返回,请尝试$scope.testTwo = data[0].TotalSharesBought.

我已经相应地更新了你的Plunkr

于 2013-09-29T07:51:55.050 回答
1

如上所述,您很可能正在异步获取这些数据。我更新了您的代码以支持承诺(这使您的代码异步并且可能不适合应用程序的其余部分)。

$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

于 2013-09-29T08:23:30.573 回答