2013-02-18 67 views
0

我有一个简单的休息存储,并填充了几个记录后,我试图通过调用create函数发送请求到服务器的记录数组。 发送POST请求,但只发送一条记录而不是数组记录。 更新 - 我忘了提及这个记录有空值的字段,这也很奇怪,因为我正在向商店中填充值。ExtJs 4 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':'[email protected]' 
}), 
Ext.create('my.model.testModel',{ 
    'name':'test name2', 
    'phone':'6345', 
    'email':'[email protected]' 
}), 
Ext.create('my.model.testModel',{ 
    'name':'test name2', 
    'phone':'24324', 
    'email':'[email protected]' 
}) 
]; 

var testStore = Ext.create('my.store.testStore'); 
testStore.loadData(namesList); 
testStore.create(); 
+0

您是否尝试使用loadRawData()而不是loadData()? – 2013-02-20 00:52:14

+0

是的,结果是一样的 – me1111 2013-02-20 14:04:39

回答

0

一个伟大的时间后,这个问题又出现了,所以我不得不反正来解决它。 最后我成功找到了工作解决方案。重点是添加batchActions:真正的存储。像这样:

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 
    } 
1

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

另一个东西:

  1. testStore.create() - 此功能需要一个对象作为第一个参数,创建模型的实例,然后将其发送到服务器。 如果在没有参数的情况下调用“create”,那么模型的实例将根据字段defaultValue中的值创建,默认情况下这些值设置为“”,这就是用空值得到响应的方式。
  2. 关于namesList。你忘了给第3个模型添加“)”。

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

感谢您的回应和纠正!不幸的是,这并没有帮助,尽管商店包含乘法记录,但仍然只发送一条记录作为对象而不是对象数组。 – me1111 2013-04-08 12:24:36

+0

看看这个[示例](http://jsfiddle.net/WWr6h/)并运行该脚本,因为结果会为每个[phantom]发送三个POST请求(http://docs.sencha.com/ ext-js/4-2 /#!/ api/Ext.data.Model-property-phantom)记录。 – Volodymyr 2013-04-08 17:43:45

+0

我正在使用extjs 4.0.7,也许原因就在此。 – me1111 2014-06-26 14:56:26