angularjs $ resource:不能$ save JSON

时间:2013-06-19 21:16:08

标签: rest angularjs

从angular开始,我试图从服务器获取数据,然后使用$ resources回复修改。

除了“保存”功能外,它工作正常。没有数据被发回服务器。

这是html

<div ng-controller="myCtrl">
<div ng-repeat="obj in objs">
    <h2>{{obj.data_1}}</h2>
    <h3>{{obj.data_2}}</h3>
    <input type='text' ng-model="obj.data_1"><br/>
    <textarea ng-model="obj.data_2" required></textarea><br/>
    <button ng-click="save()">Save</button>
</div>
</div>

service.js

'use strict';
angular.module('App.services', ['ngResource']).
factory('Obj', function($resource){
    return $resource('url/to/json');
});

controller.js:

'use strict';
angular.module('App.controllers', []).
controller('myCtrl', ['$scope', 'Obj', function($scope, Obj) {
    $scope.objs = Obj.query();
    $scope.save = function() {
        $scope.objs.save();
    }
}]);

你知道为什么在我保存的时候没有回复的内容吗?

2 个答案:

答案 0 :(得分:0)

是否应该为POST声明为GET声明的另一个$resource?每个$resource都指定特定的REST服务。

//services.js
'use strict';
angular.module('App.services', ['ngResource'])
.factory('GetObj', function($resource){
    return $resource('url/to/json');
}
.factory('SaveObj', function($resource){
    return $resource('url/to/post');
});

//controller.js
'use strict';
angular.module('App.controllers', []).
controller('myCtrl', ['$scope', 'GetObj', 'SaveObj', function($scope, GetObj, SaveObj) {
    $scope.objs = Obj.query();
    $scope.save = SaveObj.save(objs, function(resp) {
        //Callback
        console.log("Response from POST: %j", resp);
    }
}]);

答案 1 :(得分:0)

在$ resource对象上使用查询方法意味着返回如下'query': {method:'GET', isArray:true}这意味着您的$scope.objs是一个对象数组而不是一个对象,并且根据您可以使用下面的元素数量符号:

$scope.objs[i].save()

其中i是数组中元素的索引,例如,如果您返回如:

[ {id:1, name:'Some name', age:35} ]; 

然后是您的代码:$scope.objs[0].save()

修改 我创造了一个插件,也许它会帮助你... http://plnkr.co/edit/62iPCAUNjV0oJROhul1G