这是我的情况。
我正在使用此article制作动态表单。
在这里你可以看到它(文章演示)使用kendo template
。
<script id="fieldsTemplate" type="text/x-kendo-template">
<li>
<label data-bind="attr: { for: name}, text: label"></label>
<input data-bind="attr: { type: type, name: name, class: css}" # if (get("required")) {# required #} # />
</li>
</script>
生成表单后,此表单只需使用HTML5
制作表单。它没有kendo属性。例如,如果我绑定data-role
属性且值为numerictextbox
它没有给我一个数字文本框(想想它的类型是数字)。它没有那些属性。(如果我输入一个数字,它不会显示默认小数点。它只显示该数字。)
但在this示例中,如果我们将data-role属性和值添加为numerictextbox,则它将是一个数字文本框。
但在documentation或this中,似乎我必须调用kendoNumericTextBox方法来制作数字文本框。
即使我尝试将此代码添加到模板中,但它也不起作用(请假设我使用this正确添加此代码。)
$("#mytextboxid").kendoNumericTextBox();
那么我还有什么选择? 非常感谢你
答案 0 :(得分:0)
您必须将data-role属性设置为input元素,以将元素转换为kendo控件/元素。请尝试使用以下代码段。
<body>
<div id="example">
<!-- container UL to host input fields -->
<ul data-template="fieldsTemplate" data-bind="source: fields"></ul>
</div>
<!-- Kendo Template binds properties from model to input fields -->
<script id="fieldsTemplate" type="text/x-kendo-template">
<li>
<label data-bind="attr: { for: name}, text: label"></label>
<input name=#= name # class=#= css # # if (get("required")) {# required #} #
# if (type == 'number') {# data-role="numerictextbox" #}else{# type=#=type# #}# />
</li>
</script>
<script type="text/javascript">
// retrieve the model from an API call
var model = {
"fields": [{
"css": "cssClass1",
"label": "Field 1",
"name": "Field1",
"required": false,
"type": "text"
},
{
"css": "cssClass2",
"label": "Field 2",
"name": "Field2",
"required": true,
"type": "number"
},
{
"css": "cssClass2",
"label": "Checkbox Field",
"name": "CheckField",
"required": false,
"type": "checkbox"
},
{
"css": "cssClass2",
"label": "Email Address",
"name": "Email",
"required": true,
"type": "email"
},
{
"css": "cssClass2",
"label": "Password",
"name": "Password",
"required": true,
"type": "password"
}
]
};
// convert the JSON to observable object
var viewModel = kendo.observable(model);
// bind the model to the container
kendo.bind($("#example"), viewModel);
</script>
</body>
如果有任何疑虑,请告诉我。