Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rest angularjs$resource:can';t$save JSON_Rest_Angularjs - Fatal编程技术网

Rest angularjs$resource:can';t$save JSON

Rest angularjs$resource:can';t$save JSON,rest,angularjs,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='tex

从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>
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();
    }
}]);

你知道为什么我保存的时候什么都没发回来吗

难道不应该有另一个
$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);
    }
}]);

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

$scope.objs[i].save()
其中i是数组中元素的索引,例如,如果您有如下返回:

[ {id:1, name:'Some name', age:35} ]; 
然后您的代码:
$scope.objs[0].save()

编辑:
我已经创建了一个plunk,也许它会帮助你

谢谢,但是…当我这样做时,控制台返回一个错误:“TypeError:Object”没有方法“save”。如果我使用“$save()”而不是“save()”,则错误为“TypeError:Object”没有“push”方法。我正在进行中,
$save()
似乎发送帖子信息。但是发送的数据没有更新,控制台中仍然有一个错误
TypeError:Object#没有方法“push”
@desgnl我添加了一个plunk,希望这会有帮助谢谢!很清楚,我就快到了。它正在工作,但我在控制台中仍然有一个错误。请看这里:我尝试了这个,但它触发了2 GET和2 POST on load,当点击按钮时什么也没有。查看文档,我不确定是否有必要为save()声明另一个资源
[ {id:1, name:'Some name', age:35} ];