可能有人請向我解釋爲什麼這個簡單直接的代碼心不是工作,道場填充組合框控件動態
var serviceStore = new dojo.data.ItemFileWriteStore({
data: {identifier: "serviceCode",items:[]}
});
//jsonObj is a json object that I obtain from the server via AJAX
for(var i = 0; i<jsonObj.length;i++){
serviceStore.newItem({serviceCode: jsonObj[i]});
}
var serviceFilterSelect = dojo.byId('serviceSelect');
serviceFilterSelect.store = serviceStore;
沒有錯誤可言顯示,但我的id爲「serviceSelect」組合框不顯示任何選項,該組合在我的代碼的HTML部分聲明,
<input dojoType = "dijit.form.ComboBox" id="serviceSelect"></input>
朝着正確方向邁出的任何指針將不勝感激。
您好,感謝您的快速回復,我似乎有與道場的幾個問題。這個文檔實際上並不那麼一致,例如當我使用dijit.byId時,我得到的錯誤是組件正在查找的是空的,當我使用dojo.byId時,我得到了組件,但現在錯誤更改爲「TypeError:serviceFilterSelect .attr不是一個函數「,我認爲這意味着attr函數/屬性不存在?它是否被棄用或什麼? – 2011-05-04 21:42:20
serviceFilterSelect.attr - 它不是不推薦使用的函數。 「TypeError:serviceFilterSelect.attr不是函數」 - 由於使用了dojo.byId而發生此錯誤。 dojo.byId返回DOM節點,當然,DOM節點沒有這個功能。您應該使用dijit.byId - 它返回一個JavaScript對象,它是該窗口小部件的實例,並具有「.attr」函數。 – Andrei 2011-05-05 08:32:27
你應該檢查下面的事情:1.路徑:是否所有的資源都有正確的URL並且實際加載?嘗試從谷歌代碼加載dojo:。 2. parseOnLoad:默認情況下,解析器沒有加載並且不運行,所以如果你的聲明性小部件不會被實例化,除非你已經將dojo.config.parseOnLoad設置爲true。 – Andrei 2011-05-05 08:33:52