Kendo UI template API可让您在JavaScript
中使用template
。这对于自定义autocomplete template非常有用。
生成的代码运行时,this
的范围是Window object。我想将范围设置为自动完成实例,例如,使用_prev
值来自定义结果。
在此demo code上,要将color
的客户名称的substring
更改为与搜索文本等效的autocomplete
上的红色,您可以搜索{{1 template
代码中的实例。在给定的示例中,只需将template
属性更改为
template:
'<span class="k-state-default"><img src= \"../content/web/Customers/#:data.CustomerID#.jpg\" alt=\"#:data.CustomerID#\" /></span>' +
'<span class="k-state-default">'+
'# var searchText= $("\\#customers").data("kendoAutoComplete")._prev; #'+
'# data.coloredName= '+
'"<span style=\\"color:red;\\">" ' +
'+ data.ContactName.substring(0, searchText.length) +' +
'"</span>" + data.ContactName.substring(searchText.length); #'+
'<h3>#= data.coloredName #</h3>'+
'<p>#: data.CompanyName #</p>'+
'</span>',
但是,如果我无法使用$()
&#34;搜索&#34;,我希望通过设置模板生成的函数范围来实现。有可能吗?
答案 0 :(得分:1)
有可能:
var autocomplete = $("#customers").kendoAutoComplete({
// standard options, not the template
}).data("kendoAutoComplete");
var templateHtml = 'your template html using "this" here ...';
// compile the template from the html
var compiledTemplate = kendo.Template.compile(templateHtml);
// bind the template function to whatever you want, e.g. the autocomplete
var boundTemplate = compiledTemplate.bind(autocomplete);
// set the template on the widget
autocomplete.setOptions({
template: boundTemplate
});
(demo)
请注意,您在上下文中可能拥有的任何属性都会被传递给模板的数据覆盖,因此您无法从外部作用域访问这些属性(请参阅模板函数here的结构)