我正在尝试使用REST服务和$resource
进行角度工作。
它可以从JSON获取数据,但是当更新$save()
或称为$rec()
的自定义方法时,我在控制台中出现错误:TypeError: Object #<c> has no method 'push'
。将isArray
切换为true
或false
,并未改变任何内容。
我做了一个plunker:http://plnkr.co/edit/fS2bjRKPgUulTbTxgg2j
当您在自己的服务器上运行时,错误是可见的。
html:
<div ng-controller="TestCtrl">
<div ng-repeat="obj in objs">
<div>
<h3>{{obj.name}}</h3>
<h3>{{obj.age}}</h3>
<input type="text" ng-model="obj.name" /><br />
<input type="text" ng-model="obj.age" /><br />
<button ng-click="save(obj)">Save</button>
</div>
</div>
</div>
和javascript:
'use strict';
angular.module('TestApp', ['TestApp.services', 'TestApp.controllers']);
angular.module('TestApp.services', ['ngResource']).
factory('Obj', function($resource){
return $resource('datas.json', {}, { 'rec': {method: 'POST', isArray: true } });
});
angular.module('TestApp.controllers', []).
controller('TestCtrl', ['$scope', 'Obj', function($scope, Obj) {
$scope.objs = Obj.query();
$scope.save = function(obj) {
obj.$save();
console.log(obj);
}
}]);
你知道错误的来源吗?
答案 0 :(得分:0)
我已将你的plnkr复制到我的开发机器,如下所示设置了sinatra网站,但我仍然没有看到这个错误。当我点击蓝色按钮时,客户端发布了一个JSON字符串,如{"name"=>"louise", "age"=>"32"}
,一切似乎都很好。您是否正确处理POST
?
这是我的服务器代码:
<强> app.ru 强>:
# -*- coding:utf-8; mode:ruby; -*-
require 'json'
require 'multi_json'
require 'sinatra/base'
require 'sinatra/json'
class App < Sinatra::Base
helpers Sinatra::JSON
get '/datas.json' do
json([
{"name" => "louise", "age" => "32"},
{"name" => "jeanne", "age" => "25"},
{"name" => "renée", "age" => "21"},
{"name" => "fernande", "age" => "28"}
])
end
post '/datas.json' do
data = JSON.parse request.body.read.to_s
200
end
end
<强> config.ru 强>:
# -*- coding:utf-8; mode:ruby; -*-
require './app.rb'
run App