我正在学习AngularJS,我想到的可能是一个简单的问题。
我使用$ Resource从文件夹中获取json对象,并且需要对文件夹中的对象进行计数。我已经能够在save函数中的回调语句中获取我正在寻找的值,但是我做错了,我无法将其返回到我需要使用它的位置。我使用计数作为一种方法来自动增加文件夹中创建的文件的ID。
我在代码中有关于我可以访问值的位置的注释,以及我需要访问它的位置,它都在Save Function中。
非常感谢任何帮助。
我的服务:
eventsApp.factory('eventData', function($resource) {
var resource = $resource('/data/event/:id', {id: '@id'}, {"getAll": {method: "GET", isArray:true, params: {something: "foo"}}});
return {
getEvent: function(eventId) {
return resource.get({id:eventId});
},
save: function(event) {
resource.query(function(data){
console.log("Event ID In: " + data.length); //value is accessible here
});
event.id = ; //need to access value here
return resource.save(event);
},
getAllEvents: function() {
return resource.query();
}
};
});
由于
答案 0 :(得分:3)
你可以这样做,而不需要围绕$ resource
的包装器eventsApp.factory('eventData', function($resource) {
return $resource('/data/event/:id');
});
然后,在您使用工厂的地方(例如控制器代码),您可以为此行为定义一个函数
function saveEvent(event) {
eventData.query(function(data){
console.log("Event ID In: " + data.length); //value is accessible here
event.id = data.length;
eventData.save(event);
});
}
但我认为你应该重新考虑你的数据库设计。始终将保存与查询连接似乎不是一个有效的解决方案。