Kendo UI Mobile =使用点符号表示MVVM声明性绑定的数据模板

时间:2014-03-04 18:03:04

标签: javascript templates mvvm kendo-ui kendo-mobile

此后我删除了之前的帖子。

有没有办法可以使用点表示法通过窗口小部件的data-template属性访问Kendo UI模板?我知道该属性当前接受包含模板的脚本标记的ID,但我想重载/覆盖其功能以接受变量源。

原因是因为我的模板没有包含在脚本标签中,而是使用requireJS lib引入我的应用程序的html文件。

非常感谢任何帮助。

2 个答案:

答案 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