Javascript 如何在剑道UI上设置“this”的范围';自动完成模板?
剑道UI允许您在Javascript 如何在剑道UI上设置“this”的范围';自动完成模板?,javascript,jquery,kendo-ui,kendo-template,kendo-autocomplete,Javascript,Jquery,Kendo Ui,Kendo Template,Kendo Autocomplete,剑道UI允许您在模板中使用JavaScript。这有助于自定义 当生成的代码运行时,此的作用域为。我想将范围设置为autocomplete实例,例如,使用\u prev值自定义结果 在此情况下,要将与搜索文本等效的子字符串上客户姓名的颜色更改为红色,可以在模板中搜索自动完成实例。对于给定的示例,只需将模板属性更改为 template: '<span class="k-state-default"><img src= \"../content/web/Customer
模板中使用JavaScript
。这有助于自定义
当生成的代码运行时,此
的作用域为。我想将范围设置为autocomplete实例,例如,使用\u prev
值自定义结果
在此情况下,要将与搜索文本等效的子字符串上客户姓名的颜色更改为红色,可以在模板中搜索自动完成实例。对于给定的示例,只需将模板
属性更改为
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>',
模板:
'' +
''+
“#var searchText=$(“\\\\客户”).data(“kendoAutoComplete”)。#u prev;#”+
“#data.coloredName=”+
'"" ' +
“+data.ContactName.substring(0,searchText.length)+”+
““”+data.ContactName.substring(searchText.length);#”+
“#=data.coloredName”+
“:data.CompanyName”+
'',
但是,如果我不能使用$()
“搜索”,我希望通过设置模板生成的函数的范围来实现。有可能吗?有可能:
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
});
()
请注意,您在上下文中拥有的任何属性都将被传递到模板的数据覆盖,因此您无法从外部作用域访问这些属性(请参见模板函数的结构)。除非您完全负责调用代码,此
将是任何内容。您最好的办法可能是在您试图编写的代码范围内的某个地方保留对autocomplete实例的引用。保留对窗口
对象的引用是不可取的,因为我的案例是一个可重用组件。我不明白。我没有提到窗口
对象。默认情况下,此
的范围是窗口
对象,在模板生成的代码执行过程中唯一可用的对象是数据
,它引用自动完成数据源
的每个项。它们都不是存储对autocomplete
实例引用的好地方。我认为您误解了术语“scope”,它不是“this”的同义词。无论如何,我不会费劲,因为你已经接受了一个大致与我想法一致的答案。我基于你的解决方案,从这个
引用的自动完成
对象中获取搜索文本,而不是$(“\\\\客户”).data(“kendoAutoComplete”)
。但你的解决方案是正确的。谢谢对,我没注意,;很高兴我能帮忙