使用Knockout.js创建动态控件

时间:2013-08-07 11:13:58

标签: knockout.js

我正在开发一个读取XML文件的应用程序,这个xml文件包含有关要在浏览器上呈现的控件类型的信息,如文本框,组合等。 所以我打算使用Knockout.js实现相同的功能。 什么是最好的View模型设计来实现相同的。

将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”,则应显示依赖于ID =“1”的CHILDELEMENT。

对此的任何帮助都将受到高度赞赏。

谢谢, Sajesh Nambiar

1 个答案:

答案 0 :(得分:2)

某种工厂模式?

这是一个自由写的,所以它不是香草KO

http://jsfiddle.net/rDUZh/

这是工厂部分,其余的是我的lib的KO魔法

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