我試圖添加一個新的FilteringSelect小部件動態地添加到一個先前存在的聲明式標記(頁面加載)中。如何動態地將Dijit小部件添加到Dojo窗體?
prereqs = 0;
function addAnotherPrerequisite(){
var newPreReqCursor = dijit.byId("Prerequisite"+(prereqs-1)).domNode;
dojo.create("input",{
id:"prerequisite"+prereqs,
jsId:"Prerequisite"+prereqs,
dojoType:"dijit.form.FilteringSelect",
store:"PrerequisitesStore",
searchAttr:"name",
style:"width: 350px;",
required:"true",
class: "appendedPreReq"},newPreReqCursor,"after");
dojo.parser.parse(newPreReqCursor.parentNode);
prereqs++;
}
此代碼正確地構建了一個FilteringSelect小部件,但小部件似乎沒有在表單中註冊。每當我提交表單時,新窗口小部件中的值都不會出現。雖然驗證屬性起作用,並且它可以正確地從商店中提取值。我甚至可以通過它的jsId(Prerequisite1,Prerequisite2等)調用新的小部件。它只是不會POST!
而不是dojo.create我也試着直接調用FilteringSelect小部件。這也構成了小部件,但在POSTing期間沒有在表單中註冊這些值。
var filteringSelect = new dijit.form.FilteringSelect({
id: "prereq"+prereqs,
jsId: "Prerequisite"+prereqs,
store: PrerequisitesStore,
searchAttr: "name",
required: true,
style: 'width: 350px;',
class: 'appendedPreReq'
},
"prerequisite"+prereqs).startup();
我瘋了,試圖弄清楚這一點。
這很有幫助。我發現所有需要的是在我的情況下指定名稱:'new dijit.form.TextBox({name:inputNode.name},inputNode);' – Chris 2012-06-25 17:35:33