ExtJs 4来自商店的POST记录数组

时间:2013-02-18 16:36:18

标签: post extjs4 store

我有一个简单的休息存储,在用几条记录填充之后,我试图通过调用create function将post请求发送到带有记录数组的服务器。 发送POST请求但仅包含一条记录而不是一组记录。 更新 - 我忘了提到这条记录的字段为空值,这也很奇怪,因为我正在用值填充商店。

我停滞了。请给我一个亮点,我哪里出错了。感谢。

我的代码示例:

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();

2 个答案:

答案 0 :(得分:1)

您应该使用testStore.sync() insst的testStore.create()

另一件事:

  1. testStore.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 ")"
    ];
    

答案 1 :(得分:0)

经过一段美好的时光后,这个问题再次出现,所以无论如何我必须解决它。 最后,我成功找到了有效的解决方案。关键是要添加batchActions:true to store。像这样:

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
    }