1
我試圖動態地填充Ext.form.CheckboxGroup
和Ext.form.Checkbox
從由jsp頁面拉出的JSON對象派生。我的JSON對象看起來是這樣的:如何使用基於從服務器返回的JSON對象生成的複選框填充Ext.form.CheckboxGroup
{
"sensors": [
{ "id": 200, "name": "name - B - A" },
{ "id": 201, "name": "name - B - B" },
{ "id": 202, "name": "name - C - A" },
{ "id": 203, "name": "name - C - B" }
]
}
我可以用代碼加載這些對象爲Ext.data.JsonStore
這樣的:
new Ext.data.JsonStore({
id: 'sensorStore',
autoLoad: true,
method: 'GET',
baseParams: {
jobType: 'sensor'
},
url: 'getstatus.jsp',
root: 'sensors',
sortInfo: { field: 'id', direction: 'ASC' },
fields: [ 'id', 'name' ]
}),
我的理解是,這會給我訪問一組Ext.data.Record
對象,但是我無法弄清楚如何去迭代這些記錄來創建任何Ext.form.Checkbox
,或者如果有其他方法來實現相同的結果。
我不想設置複選框的值,但我需要能夠在提交表單時引用它們。
這看起來像是我所需要的。我已經能夠得到它幾乎工作,但有一個問題。加載JsonStore異步?當我運行此代碼和console.log()結果時,我的.getRange()調用爲空。如果稍後使用Chrome Developer Tool Console檢查.getRange()調用的值,它將顯示數據。如果加載存儲的調用是異步的,那麼在通過記錄開始迭代之前如何確保加載數據? – 2011-03-17 13:36:08
我已經想出了異步部分,並將所有上述代碼片段放在來自JsonStore.load()調用的回調中。現在我得到一個「Uncaught TypeError:Object 200 has no method'indexOf'」。 (這裏的「200」是我的組中應該是CheckBox的第一個Object的id)。我不知道這是什麼意思。 – 2011-03-17 14:36:15
上面編輯了我的回答 - 在你的JsonStore - 字段中:[{name:'id',type:int},'name'] – 2011-03-17 15:52:24