ExtJs 4 POST存储中的记录数组



我有一个简单的rest存储,在用几个记录填充它之后,我试图通过调用create函数向服务器发送带有记录数组的post请求。POST请求被发送,但只使用一条记录而不是记录数组。UPDATE-我忘了提到这个记录有空值的字段,这也很奇怪,因为我正在用值填充存储。

我停滞不前。请告诉我哪里出了问题。谢谢

我的代码示例:

Ext.define('my.store.testStore',{
    extend: 'Ext.data.Store',
    storeId: 'teststore',
    model: 'my.model.testModel',
    proxy: {
        type: 'rest',
        url: 'http://someurl.ru',
        reader: 'json'
    }
});
Ext.define('my.model.testModel',{
    extend: 'Ext.data.Model',
    fields: [
      {name: 'name', type: 'string'},
      {name: 'phone', type: 'string'},
      {name: 'email', type: 'string'}
    ]
});
var namesList = [Ext.create('my.model.testModel',{
  'name':'test name1',
  'phone':'343-343',
  'email':'test@test.com'
}),
Ext.create('my.model.testModel',{
  'name':'test name2',
  'phone':'6345',
  'email':'test@test.com'
}),
Ext.create('my.model.testModel',{
  'name':'test name2',
  'phone':'24324',
  'email':'test@test.com'
})
];
var testStore = Ext.create('my.store.testStore');
testStore.loadData(namesList);
testStore.create();

您应该使用testStore.sync()代替testStore.create()

另一件事:

  1. create()-此函数将对象作为第一个参数,创建模型的实例,然后将其发送到服务器。若在没有参数的情况下调用"create",那个么模型的实例是基于字段defaultValue中的值创建的,默认情况下该字段设置为",也就是说,您可以通过空值获得响应
  2. 关于namesList。您忘记在第3个型号中添加")"。

    var namesList = [Ext.create('my.model.testModel',{
      'name':'test name1',
      'phone':'343-343',
      'email':'test@test.com'
    }),
    Ext.create('my.model.testModel',{
      'name':'test name2',
      'phone':'6345',
      'email':'test@test.com'
    }),
    Ext.create('my.model.testModel',{
      'name':'test name2',
      'phone':'24324',
      'email':'test@test.com'
    })//Here was missed ")"
    ];
    

过了一段时间,这个问题再次出现,所以我不得不解决它。最后我成功地找到了可行的解决方案。重点只是将batchActions:true添加到存储中。像这样:

Ext.define('my.store.testStore',{
    extend: 'Ext.data.Store',
    storeId: 'teststore',
    model: 'my.model.testModel',
    proxy: {
        type: 'rest',
        url: 'http://someurl.ru',
        reader: 'json',
        batchActions: true
    }

最新更新