延迟对象的 AngularJS 评估



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

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

我做错了什么?

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

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

从这里开始,您可以照常访问您的数据,并可以调用.length。请注意,在使用 promise 时应始终处理错误,否则可能会难以调试。

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

if (deferredPersons.then.length > 0)

普伦克尔

最新更新