AngularJS与$ resource和web服务器有关的问题

时间:2014-09-29 09:02:52

标签: json node.js angularjs post resources

我已经测试了这个代码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();

0 个答案:

没有答案