我已经测试了这个代码2个月了,这是我教程中第一个学习AngularJS的练习。 挑战是计算文件夹中的所有.json文件并将其增加为1,这样当我保存另一个json文件时,它将始终具有比前一个更高的ID。我在使用Web服务器方面遇到了很多麻烦,首先NodeJS似乎不允许在其标准配置中使用JSON帖子。所以我从另一个问题的stockoverflow中找到了一个修改过的web-server.js: $resource.save is not functioning https://github.com/glepretre/angular-seed/commit/9108d8e4bf6f70a5145b836ebeae0db3f29593d7#diff-d169b27b604606d4223bd5d85cad7da1我也尝试了教程附带的web-server.js: http://pastebin.com/Ckfh4jvD似乎更好。 WAMP也没有用,我无法让Apache允许JSON帖子。
问题是web服务器发布了json或者将json视为一个对象而不是一个数组,即使我已经使用了" isArray:true"我使用.query()而不是.get()。我尝试了很多其他的东西,比如transformResponse:[]。我需要数组让.length工作!有时候它会获取一个数组而POSTS是一个对象,它后来再次作为对象读取它变得非常奇怪。
代码有时会发布或有时我需要更改:id to:id.json,通常这意味着服务器再次将其作为对象检索,这不是我想要的,但这在2 nodeJS服务器之间有所不同。
.factory('eventData', ['$resource', '$q', function ($resource, $q) {
var resource = $resource('/app/data/event/:id', {id: '@id'}, {"getAll": {method: "GET", isArray: true}});
var number = resource.query();
console.log(number);
return {
getEvent: function () {
var deferred = $q.defer();
resource.get({id: 1},
function (event) {
deferred.resolve(event);
},
function (response) {
deferred.reject(response);
});
return deferred.promise;
},
save: function (event) {
var deferred = $q.defer();
event.id = number.length;
resource.save(event,
function (response) {
deferred.resolve(response);
},
function (response) {
deferred.reject(response);
}
);
return deferred.promise;
}
};
}]);
编辑:这似乎工作得更好但是我需要弄清楚如何将.then()放入此服务中?
.factory('eventData', ['$resource', '$q', function ($resource, $q) {
var resource = $resource('/app/data/event/:id.json',
{id: '@id'}, {method: "getTask", q: '*' },
{'query': { method: 'get'}});
var number = resource.query();