【发布时间】:2015-02-24 00:58:09
【问题描述】:
Kendo UI 的template API 允许您在template 中使用JavaScript。这对于自定义autocomplete template 很有用。
生成的代码运行时,this 的作用域为Window object。我想将范围设置为自动完成实例,例如,使用_prev 值来自定义结果。
在此demo code上,要将substring上的客户名称color更改为红色,相当于搜索文本,您可以在template代码中搜索autocomplete实例。在给定的示例中,只需将 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>',
但是,如果我不能使用$()“搜索”,我想通过设置模板生成的函数的范围来做到这一点。有可能吗?
【问题讨论】:
-
除非您完全负责呼叫代码,否则
this将是任何代码。您最好的选择可能是在您尝试编写的代码范围内的某处保留对自动完成实例的引用。 -
保留对
Window对象的引用是不可取的,因为我的案例是一个可重用的组件。 -
我不明白。我没有提到
Window对象。 -
默认情况下,
this的范围是Window对象,在模板生成的代码执行期间唯一可用的对象是data,它引用自动完成@987654342 的每个项目@。它们都不是存储对autocomplete实例的引用的好地方。 -
我想你误解了“范围”这个词,它不是“这个”的同义词。无论如何,我不会费力,因为您已经接受了一个大致符合我想法的答案。
标签: javascript jquery kendo-ui kendo-template kendo-autocomplete