2014-03-04 56 views
0

我有一個映射定義的模型創建和填充模型實例:煎茶的ExtJS通過Ajax

Ext.define('IM.model.Source', { extend : 'Ext.data.Model', fields : [ 
    { 
    "name": "billref_id", 
    "mapping": "billref.id" 
    },... 

如果我用這個模型創建一個存儲網格並加載,存儲中的每個記錄都有從我的JSON數據中正確初始化billref_id屬性爲billref.id的值。

如果我代替加載使用Ext.Ajax.request相同的數據,然後將該數據提供給模型實例是這樣的:

var response = Ext.Ajax.request({ 
      async: false, 
      method:'GET', 
      url: 'im_read.json', 
      params:{pkValue:1} 
}); 
var items = Ext.decode(response.responseText); 
record = Ext.create('IM.model.Source', items.rows[0]); 

所得記錄沒有從填充映射字段JSON數據。 只有模型的非映射成員纔會分配值。

這是一個已知的問題,創建和填充模型實例這種方式不適用於映射字段,或者我做錯了什麼? 謝謝,

回答

2

模型字段的mapping僅由Ext.data.reader.Reader使用,該字段通常在您的商店中配置。如果您自己創建模型的實例,則不考慮映射,因爲未調用讀取器,並且模型期望您按字段名稱提供數據(請參閱docs)。

解決你的問題,你可以撥打讀者的read功能與您的AJAX對象:

var response = Ext.Ajax.request({ 
    async: false, 
    method:'GET', 
    url: 'im_read.json', 
    params:{pkValue:1} 
}); 
var resultSet = myStore.getReader().read(response); 

這將創建一個Ext.data.ResultSet包含您的正確映射記錄。