Backbone + kendoGrid,PUT无法正常工作

时间:2013-02-03 09:32:03

标签: javascript jquery backbone.js kendo-ui

我正在尝试将kendoGrid集成到Backbone View上,这是我的视图代码:

App.Views.UsersManager = Backbone.View.extend({
  tagName: 'section',
  id: 'users-manager',
  className: 'tile',
  template: Handlebars.compile($('#profile-usersManager-template').html()),
  render: function () {
    console.log('usersManager.render -> collection', this.collection);
    var self = this;
    this.$el.html(this.template());
    var dataSource = new kendo.data.DataSource({
      transport: {
        read: {
          url: '/users',
          type: 'GET',
          dataType: 'json'
        },
        update: {
          url: '/users',
          type: 'PUT',
          dataType: 'json'
        }
      },
      schema: {
        data: 'data'
      },
      batch: true
    });
    this.$('table.users-manager').kendoGrid({
      scrollable: false,
      sortable: true,
      dataSource: dataSource,
      toolbar: ["save"],
      editable: true,
      navigatable: true,
      // filterable: true,
    });
    return this;
  }
});

视图正确呈现,并且kendoGrid正确地从我的SlimPHP框架获取用户数据,但是当我尝试修改网格元素并点击“toolbar:[”save“]提供的”保存更改“按钮时“,即使在我的firebug控制台上也没有任何反应......根本就没有服务器通信。

我是kendo(和Backbone)开发的新手,也许我在语法上失败了? :卡住:

Atanas Korchev回答后更新 这是我更新的DataSource:

var dataSource = new kendo.data.DataSource({
  transport: {
    read: {
      url: '/users',
      type: 'GET',
      dataType: 'json'
    },
    update: {
      url: '/users',
      type: 'PUT',
      dataType: 'json'
    }
  },
  schema: {
    data: 'data',
    model: {
      id: 'id',
      fields: {
        email: {},
        name: {},
        surname: {},
        rank: {},
        type: {}
      }
    }
  },
  batch: true
});

这不能解决我的问题,我想要注意我的PHP代码实际上是这样的:

$app->put('/users', function () use ($app, $db) {
  exit('put ok');
});

只是为了查看客户端/服务器通信是否正常...我知道这将是一个错误,但我也看不到任何firebug错误,例如“Save Changes”按钮没有事件...(I会尝试 Dennis Rongo 的建议..但我认为不是解决方案......)

抱歉我的英文不好

2 个答案:

答案 0 :(得分:1)

尝试在DataSource settings中描述您的模型:

schema: {
   data: 'data',
   model: {
      id: "MyId"      
   }
}

您至少需要指定id

答案 1 :(得分:0)

通过从架构对象中删除数据:'data'来解决,有链接kendoGrid batch editing