AngularJS对延迟对象的评估

时间:2014-02-13 06:58:41

标签: javascript angularjs angularjs-scope deferred

我有一个简单的应用程序,它从REST API返回对象并将它们绑定到范围var。这工作正常,但如果我尝试对$ resource promise返回的对象进行任何处理,则对象是未定义的。

我将这个plunkr放在一起,使用$ q服务重现行为。第一部分将简单数组绑定到范围,第二部分通过延迟对象获取相同的数组。第三个通过延迟对象再次获取数组,然后尝试将一些简单的逻辑应用于返回的对象。不幸的是,返回的对象没有'length'属性。显然我错过了一些东西,大概是使用$ scope。$ apply但我也没有运气。

我做错了什么?

2 个答案:

答案 0 :(得分:1)

您需要将then与您的承诺一起使用。

asyncInit().then(function(data){
  $scope.deferredPersons = data;
});

从此处开始,您可以按常规访问您的数据,并可以在其上调用.length。注意,使用promises时应始终处理错误,否则很难调试。

答案 1 :(得分:0)

如果您想使用长度,请使用deferredPersons.then.length

if (deferredPersons.then.length > 0)

plunkr