在这个网站上( Kendo UI的自动完成小部件文档),有一段代码我只是部分理解。
$(document).ready(function() {
var autocomplete = $("#customers").kendoAutoComplete({
minLength: 1,
dataTextField: "ContactName",
headerTemplate: '<div class="dropdown-header">' +
'<span class="k-widget k-header">Photo</span>' +
'<span class="k-widget k-header">Contact info</span>' +
'</div>',
template: '<span class="k-state-default"><img src=\"../../content/web/Customers/#:data.CustomerID#.jpg\" alt=\"#:data.CustomerID#\" /></span>' +
'<span class="k-state-default"><h3>#: data.ContactName #</h3><p>#: data.CompanyName #</p></span>',
dataSource: {
transport: {
read:{
dataType: "jsonp",
url: "http://demos.telerik.com/kendo-ui/service/Customers"
}
}
},
height: 370,
}).data("kendoAutoComplete");
});
这是我的理解:这是一个标准的自动完成控件,该控件使用模板使小部件看起来更好。我了解模板的工作原理(大部分情况),并且我知道将模板放入.ready()函数会使模板在DOM加载后运行。
我不明白的是最后需要jQuery的.data()函数。为什么在那儿?我试图理解jQuery文档,但似乎还有更深层次的事情发生。autocomplete
此代码示例的其余部分未使用该变量,因此我想知道这是否属于Kendo的错误。
.data()函数将任意数据附加到DOM元素。剑道在多大程度上使用此任意数据?
在您的示例中,您不再需要它,因为您实际上不再使用autocomplete
。
就像您说的那样,jQuerydata
函数将任意数据附加到DOM元素,这正是KendoUI在创建任何Widget时所做的工作:需要的任何数据都将附加到与该Widget关联的DOM元素,因此,如果将来您需要执行一些操作使用该小部件,您可以使用对其进行引用data
。
示例:创建一个Kendo Window
,用户可以将其关闭(这并不意味着销毁它,只是将其隐藏)。如果将来需要打开它,只需执行$("#win-id").data("kendoWindow").open()
。如果您需要使用that进行许多操作window
,而不必$("#win-id").data("kendoWindow")
每次都执行,则可以执行以下操作:
var myWindow = $("#win-id").data("kendoWindow");
但是有时您在创建它时会这样做:
var myWindow = $("#win-id").kendoWindow({}).data("kendoWindow");
这意味着你创建一个kendoWindow
连接到一个DOM元素id
是win-id
,然后你通过执行获得对它的引用.data("kendoWindow")
就可以了。
在您显示的代码中,这基本上是他们的工作:创建一个,autocomplete
并获得对其的引用以供将来使用。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句