0

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

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

这是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>

服务.js

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

控制器.js:

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

你知道为什么我保存时什么都没有回传吗?

4

2 回答 2

0

不应该$resource以 GET 声明的方式为 POST 声明另一个声明吗?每个都$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);
    }
}]);
于 2013-06-19T21:55:46.420 回答
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()

编辑: 我创建了一个 plunk,也许它会帮助你...... http://plnkr.co/edit/62iPCAUNjV0oJROhul1G

于 2013-06-19T22:03:15.390 回答