我想建立一個商店,將產生的形式,基於數據從服務器 如模型:ExtJS的存儲域操作
{success:true,data:[item1:{},item2{}...]}
有沒有什麼方法可以讓我在寫的模式一家商店?
這是我大氣壓:
Ext.define('Tan.data.SimpleStore', {
extend: 'Ext.data.Store',
constructor: function (config) { //Not initComponent, thx for wasting an hour...
config=this.config||{};
Ext.define('Users', { //ext base example model.
extend: 'Ext.data.Model',
fields: [
{name: 'id', type: 'string'},
]
});
config.proxy= {
type: 'ajax',
url : 'server.php?c=testFunction',
reader: {
type: 'json',
root: 'data'
}//Example return: {"success":true,"data":["0":1,"2":1,"3":1,"4":1]}
}
config.model='Users';//Store breaks without this :((
this.callParent([config]); //Proto It
this.load({ // watch for the load event and then manipulate
// (or try to atleast) the fields
callback: function(records,operation,success){
// As expected obj is correct
var obj=Ext.decode(operation.response.responseText);
//K now wtf. Have the data but....
Ext.ModelManager.unregister(this.config.model);
Ext.define(this.config.model, {
extend: 'Ext.data.Model'
,fields: Ext.Object.getKeys(obj.data)
,url : 'server.php?c=testFunction'
,reader: {
type: 'json',
root: 'data'
}
});//yay you over wrote the model, but meh, nothing
console.log(this); //Bleh 0 items in store.data
}
});
}
});
var s= Ext.create('Tan.data.SimpleStore');
s.load();
看來,一個人必須有加載存儲時宣佈的典範,所以我只需要聲明一個CRUD之一,每一個打算在寫它。
理論上,我猜想它可能通過對ext.Ajax調用進行回調作爲構造函數來工作,但我試圖避免它。
我到目前爲止使用圖表的最佳結果是基於store onload事件重新創建整個對象。有點怪異,但它允許更多的可用性(例如動態最小/最大等)。改變圖形的配置(甚至改變商店和模型的範圍),不應該那麼痛苦。 – Alex