0

我有一个简单的休息商店,在用几条记录填充它之后,我试图通过调用 create 函数将发布请求发送到带有记录数组的服务器。发送 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();
4

2 回答 2

1

您应该使用testStore.sync() insted of testStore.create()

另一件事:

  1. testStore.create() - 此函数将对象作为第一个参数并创建模型实例,然后将其发送到服务器。如果在没有参数的情况下调用“create”,则模型的实例是根据默认设置为“”的字段defaultValue中的值创建的,这就是您得到空值响应的方式。
  2. 关于名称列表。您忘记将“)”添加到第 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 ")"
    ];
    
于 2013-03-28T18:59:46.170 回答
0

过了很长时间,这个问题又出现了,所以我还是不得不解决它。最后我成功地找到了可行的解决方案。关键是添加 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
    }
于 2014-06-27T09:49:57.790 回答