我有一个应用程序,允许用户动态创建包含kendo输入的div。为此,我有一个包含多个剑道输入的div,我将其用作一种模板。当用户决定向页面添加一个部分时,我使用jquery.clone()克隆我的div。 UI中的一切看起来都很好,但由于剑道输入只在HTML中初始化一次然后被复制,因此输入不会被重建,因此初始ID不是唯一的,输入也不起作用。
我尝试通过
以编程方式修复此问题var $kendoInputs = $$(".draggableContainer .k-input");
for (var j = 0; j < $kendoInputs.length; j++) {
if ($($kendoInputs[j]).attr("id")) {
var newid = "newid" + j;
$($kendoInputs[j]).attr("id", newid).attr("name", newid);
}
}
但由于输入已经初始化,因此在此时更改ID是无用的。有没有办法更改剑道输入的ID然后重建它?
对于长篇文章感到抱歉,并提前致谢
答案 0 :(得分:1)
几乎那里:http://dojo.telerik.com/@Stephen/EWEna
尝试克隆kendo元素的基本输入(使用新的id)而不是kendo添加的所有元素。 然后获取原始窗口小部件的类型和选项,并使用原始选项将新元素初始化为原始类型。
var originalElement = $("#" + originalID);
var originalWidgetType = "kendo" + kendo.widgetInstance(originalElement).options.name;
var originalWidget = originalElement.data(originalWidgetType);
element[originalWidgetType](originalWidget.options);
我的dojo示例很接近...但由于某种原因,克隆的DatePickers太宽了......我还没有测试过所有可能的元素,但我认为它可以作为一个开始。
修改强>
我发现使用Kendo MVVM的这种技术似乎更好:http://jsfiddle.net/krustev/U6nSv/
这是不我的解决方案(不确定如何信用)。
以下是我使用该技术更新的原始示例:http://dojo.telerik.com/@Stephen/aquRE