雖然經歷了chrome當機事件..(見聊天室)
還我打的內容不見..
不過..在下對於ExtJS的知識還很短淺..
還是上來簡短發問..
先給一段大概的CODE:
var newform = new Ext.form.FormPanel({
items:[
{
xtype:'button',
text: 'add checkbox',
handler: function() {
//點擊按鈕後 至後台PHP讀取json 此段json後面會解釋
Ext.Ajax.request({
method: 'POST',
url:'getCheckBox.php',
success: function(response,params) {
var Grpform = Ext.getCmp('CheckBoxGrp');
//將取得的json decode 給 result
var result = Ext.JSON.decode(response.responseText);
//下面判斷式是為了防止重複按鈕時重複新增checkbox
//因此判斷CheckBoxGroup裡面若有item則依序刪除
if (Grpform.items.length != 0) {debugger;
for (var i=0; i<result.length; i++) {
Grpform.remove(Grpform.items.items[1]);
}
}
//下面迴圈是將抓來的json(checkbox)依序加入item中
for (var i=0; i<result.length; i++) {
var tempObj = new Ext.form.Checkbox({
boxLabel:result[i].boxLabel,
name: result[i].name,
inputValue: result[i].inputValue
});
Grpform.items.add(tempObj);
}
Grpform.updateLayout();//更新新增後的表單
}
});
}
},{
xtype: 'checkboxgroup',
id: "CheckBoxGrp",
name: "CheckBoxGrp",
columns: 2,
width: '100%'
}
]
})
上面是UI部份
以下是PHP部份
PHP部份會處理從SQL抓來的資訊
並重組為JSON字串回傳給前端(也就是上面的UI)
以下是組好的JSON CODE:(舉例版~沒辦法~商業機密~XD)
<?php
echo "[
{'boxLabel':'Item1','name':'chb1','id':'chb1','inputValue':'value1'},{'boxLabel':'Item2','name':'chb2','id':'chb2','inputValue':'value2'},{'boxLabel':'Item3','name':'chb3','id':'chb3','inputValue':'value3'},]";
?>
以上~敘述完了~~
來說明我的問題...
有問題的是下面這段UI裡面的CODE..
上面是UI部份
以下是PHP部份
PHP部份會處理從SQL抓來的資訊
並重組為JSON字串回傳給前端(也就是上面的UI)
以下是組好的JSON CODE:(舉例版~沒辦法~商業機密~XD)
//下面判斷式是為了防止重複按鈕時重複新增checkbox
//因此判斷CheckBoxGroup裡面若有item則依序刪除
if (Grpform.items.length != 0) {debugger;
for (var i=0; i<result.length; i++) {
Grpform.remove(Grpform.items.items[1]);
}
}
原本沒加這段時..
按按鈕會出現重複add的Bug~
於是才新增這斷判斷式~
但加完之後~卻出現錯誤~
然後畫面上的form就出現像是破圖的情況~
進入debugger模式..
錯誤訊息如下..
Uncaught TypeError: Cannot read property 'children' of undefined(…)
我大概知道是因為加了remove刪除item導致
但邏輯上..刪除在新增好像可行~
請問remove後再add Item有甚麼問題
另外..有其他作法嗎?
看不懂..歡迎發問~XD