2013-02-18 66 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