extjs存储来自服务器的id

时间:2012-03-27 21:58:02

标签: extjs4 store

我尝试让Ext.Data.Store正常工作......

使用普通代理可以很好地使用它:

var user = Ext.create('User', {name: 'Ed Spencer', email: 'ed@sencha.com'});
user.save({
  callback: function(){
    arguments[0].destroy();
  }
});

请拨打以下网址:

POST“http:// localhost:3000 / users?_dc = 1332885308330” 删除“http:// localhost:3000 / users / 1995?_dc = 1332885308524”

我的服务器总是将1995作为id返回。

当我在商店尝试同样的事情时:

var user = store.add({name: 'Ed Spencer', email: 'ed@sencha.com'});
store.sync();

store.destroy(store.getAt(0));
store.sync();

它称之为网址:

POST“http:// localhost:3000 / users?_dc = 1332885308330” 删除“http:// localhost:3000 / users / User-ext-record-2?_dc = 1332885308326& id = User-ext-record-2”

为什么使用普通代理,内部ID是正确的而不是存储...

这是我的模型,代理和商店配置:

Ext.define('User', {
    extend: 'Ext.data.Model',
    fields: ['id', 'name', 'email'],

    proxy: {
        type: 'rest',
        url : '/users',
        reader: {
          type: 'json',
          root: 'data',
          id: 'id'
        },
        writer: {
            type: 'json',
            writeAllFields: true,
            root: 'data',
            messageProperty: 'message'
        }
    },
});

var store = Ext.create('Ext.data.Store', {
    model: 'User',
});

修改

适用于removeAt()

setTimeout(function(){
    store.removeAt(0);
    store.sync();
}, 2000);

1 个答案:

答案 0 :(得分:1)

  

store.destroy(store.getAt(0));

这种方法是否存在我在文档中找不到它,可能是你需要使用

  

store.removeAt(0);