1

我正在尝试使用 REST 服务和$resource.

它可以从 JSON 获取数据,但是在更新 whith$save()或调用自定义方法时$rec(),我在控制台中出现错误提示:TypeError: Object #<c> has no method 'push'。切换isArraytrueorfalse并没有改变任何东西。

我做了一个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);
    }
}]);

你知道错误来自哪里吗?

4

1 回答 1

0

我已将您的 plnkr 复制到我的开发机器上,如下设置了一个 sinatra 站点,但我仍然没有看到此错误。{"name"=>"louise", "age"=>"32"}当我单击蓝色按钮时,客户端会发布一个 JSON 字符串,一切似乎都很好。你处理POST得当吗?

这是我的服务器代码:

应用程序.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

配置.ru

# -*- coding:utf-8; mode:ruby; -*-

require './app.rb'
run App
于 2013-06-20T15:23:11.053 回答