gpt4 book ai didi

javascript - ngresource 访问属性资源时出错

转载 作者:行者123 更新时间:2023-12-03 09:45:15 25 4
gpt4 key购买 nike

我下面有一个简单的工厂,它请求带有一些位置信息的 json 对象。请求有效,我可以看到数据位于对象中。但不知何故存在范围问题。即使我知道该对象具有该属性和正确的数组,我也无法访问该对象的属性。

您可以在下面的代码片段中看到(如果您查看注释),当我尝试输出到控制台时,我无法访问该对象的某些值。

知道可能出现什么问题吗?

    .factory('Spots', function(){
return{
all: function($resource){
var locations;
var Locations = $resource('http://localhost\\:3000/locationsd/');
locations = Locations.get(function(){
console.log(locations.results[0].obj.name); // THIS WORKS -> gives me the name of the location
});
console.log(locations); // THIS WORKS -> log an object with a result array, etc.
console.log(locations.results[0].obj.name); // THIS DOESNT WORK -> TypeError: Cannot read property '0' of undefined
return locations;
}
}
})

最佳答案

这是因为它是异步的。要在服务中正确利用 $resource,您应该使用 promise 。

.factory('Spots', function(){
return{
all: function($resource){
var Locations = $resource('http://localhost\\:3000/locationsd/');
return Locations.get().$promise.then(function(res){
return res;
});
}
}
})

然后当从 Controller 调用该函数时:

Spots.all().then(function(res){ 
//do stuff with res here
})

如果您不知道 Promise 是什么,请在此处阅读:https://docs.angularjs.org/api/ng/service/ $q

总体思路是资源 promise 它最终会完成,完成后,它将调用您传递到其 then() 的函数。

关于javascript - ngresource 访问属性资源时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31059324/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com