2013-08-07 63 views
0

我正在開發一個讀取XML文件的應用程序,並且此xml文件具有關於要在瀏覽器上呈現的控件類型的信息,如文本框,組合等。 因此,我打算實施同樣使用Knockout.js。 什麼是最好的View Model設計來實現它。使用Knockout.js創建動態控件

考慮XML文件作爲:

<Controls> 
<PARENTELEMENT> 
<ATTR ID="1" VISIBILTY="T" TYPE="COMBOBOX"></ATTR> 
<ATTR ID="2" VISIBILTY="N" TYPE="COMBOBOX"></ATTR> 
</PARENTELEMENT> 
<CHILDELEMENT DEPENDSON="1"> 
<ATTR ID="3" VISIBILTY="T" TYPE="TEXTBOX" VALUE="ABC"></ATTR> 
<ATTR ID="4" VISIBILTY="T" TYPE="COMBOBOX" VALUE="XYZ"></ATTR> 
</CHILDELEMENT> 
<CHILDELEMENT DEPENDSON="2"> 
<ATTR ID="5" VISIBILTY="T" TYPE="TEXTBOX" VALUE="DEF"></ATTR> 
<ATTR ID="6" VISIBILTY="T" TYPE="COMBOBOX" VALUE="PQR"></ATTR> 
</CHILDELEMENT> 
</Controls> 

預期輸出應的父元素控制應該得到顯示的第一和如果某物被選擇對於ID =「1」,則是childElement該dependson ID =「1」應得到顯示。

對此的任何幫助將不勝感激。

感謝, Sajesh南比亞爾

+1

你能發表一個你的xml的例子和預期的結果嗎? – Damien

+0

@Damien請參閱關於問題 –

+0

的更新我正在爲您制定工廠模式答案,在10秒內掛斷 – Anders

回答

2

某種類型的工廠模式的?

這utlizes書面所以它不是香草KO

http://jsfiddle.net/rDUZh/

這是工廠的一部分LIB香港專業教育學院,剩下的就是KO魔術在我的lib

this.editors = ko.utils.arrayMap(data, function(item) { 
    return new MyApp.Editors[item.type + "EditorViewModel"](item); 
}); 

我的lib目錄下: https://github.com/AndersMalmgren/Knockout.BindingConventions

使用nuget安裝

Install-Package Knockout.BindingConventions 
+0

謝謝安德斯這就是我正在尋找 –