此后我删除了之前的帖子。
有没有办法可以使用点表示法通过窗口小部件的data-template
属性访问Kendo UI模板?我知道该属性当前接受包含模板的脚本标记的ID,但我想重载/覆盖其功能以接受变量源。
原因是因为我的模板没有包含在脚本标签中,而是使用requireJS lib引入我的应用程序的html文件。
非常感谢任何帮助。
答案 0 :(得分:1)
如果kendo.initWidget
使用kendo.parseOptions
而不是对该函数的私有引用,我认为您要查找的内容会相对容易。您仍然可以进行这些更改,但实际上,根据Petur的建议,使用自定义小部件可能更容易。
示例强>
包含模板的app对象:
window.app = {
template: {
autoComplete: "this row: #= data #"
}
}
小部件定义:
var autoCompleteWidget = (function (init) {
return kendo.ui.AutoComplete.extend({
options: {
name: 'AutoComplete'
},
init: function (element, options) {
var templateLocation = $(element).data("template-location");
if (templateLocation) {
options.template = (0, eval)(templateLocation);
}
init.call(this, element, options);
}
});
})(kendo.ui.AutoComplete.fn.init);
kendo.ui.plugin(autoCompleteWidget);
HTML(你可以简单地使用数据模板,但使用不同的属性可能是一个有用的提示,这是使用不同的方法,不接受DOM ID):
<input data-role="autocomplete"
data-template-location="app.template.autoComplete" data-bind="source: data" />
(demo)
答案 1 :(得分:0)
不,没有这样的方法。相反,您必须指定模板imperatively through pure JavaScript。