我有一个简单的应用程序,它从 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)
普伦克尔