Kendo UI 框架提供了一个易用,高性能的JavaScript模板引擎。通过模板可以创建一个HTML片段然后可以和JavaScript数据合并成最终的HTML元素。
Kendo 模板侧重于UI显示,支持关键的模板功能,着重于性能而不是语法上的方便。
模板语法
Kendo 模板使用了一种称为“#”的语法形式,使用这种语法,#用来表明模板中的某个部分可以使用JavaScript数据来替代。
用三种方式使用#语法:
- 显示字面量 #=#
- 显示HTML元素 #:#
- 执行任意的Javascript代码 #if() {# …#}#
注意:如何你的模板中包含有“#”字符,不是用来绑定的部分,你必须使用转义字符,否则会引起模板编译错误。 你可以通过“\\#”转义需要显示“#”的地方。
显示原始数据
显示数据的本来的形式是使用模板的一个最基本的用法,使用Kendo UI模板,可以使用如下类似的代码:
1 |
var template = kendo.template("<div id='box'>#= firstName #</div>") |
上面代码创建了“编译”过的嵌入式模板,使用这个模板可以用来显示数据,比如下面的代码
1 |
<div id="example"></div> |
3 |
var template = kendo.template("<div id='box'>#= firstName #</div>"); |
4 |
var data = { firstName: "Todd" }; //A value in JavaScript/JSON |
5 |
var result = template(data); /Pass the data to the compiled template |
6 |
$("#example").html(result); //display the result |
通过模板与数据的合并,最终显示“Todd”。
显示HTML数据
如果你需要显示经过HTML编码过的数据,使用Kendo UI模板可以自动处理这些编码过的HTML元素,但需要使用不同的语法 #: …#,例如:
1 |
var template = kendo.template("<div id='box'>#: firstName #</div>"); |
完整的示例如下:
1 |
<div id="example"></div> |
3 |
var template = kendo.template("<div id='box'>#: firstName #</div>"); |
4 |
var data = { firstName: "<b>Todd</b>" }; //Data with HTML tags |
5 |
var result = template(data); //Pass the data to the compiled template |
6 |
$("#example").html(result); //display the resulting encoded HTML Output (<b>Todd</b>) |
这个例子的显示结果为
而不是 Todd,如果需要显示Todd ,则需要使用#= # 语法,显示HTML编码的一个主要作用是当你无需再模板中显示HTML标记,而是把整个标记和其内容作为字符串显示出来。
使用外部模板和表达式
在模板中也可以使用表达式,Kendo UI 支持者模板中执行JavaScript代码,在模板中使用JavaScript代码的方法是在JavaScript语句的前后加上#,比如下面模板显示一组列表:
1 |
<script id="javascriptTemplate" type="text/x-kendo-template"> |
3 |
# for (var i = 0; i < data.length; i++) { # |
然后为了使用这个模板,可以通过模板的id ,通过kendo.template 创建这个模板,然后和数据合并,比如:
1 |
<div id="example"></div> |
3 |
<script id="javascriptTemplate" type="text/x-kendo-template"> |
5 |
# for (var i = 0; i < data.length; i++) { # |
11 |
<script type="text/javascript"> |
12 |
//Get the external template definition using a jQuery selector |
13 |
var template = kendo.template($("#javascriptTemplate").html()); |
15 |
//Create some dummy data |
16 |
var data = ["Todd", "Steve", "Burke"]; |
18 |
var result = template(data); //Execute the template |
19 |
$("#example").html(result); //Append the result |

可以看到模板执行了JavaScipt的for 循环,并且我们使用了外部模板,外部模板的定义使用type=”text/x-kendo-template”来定义,并通过其id来访问这个外表模板。
在模板中也可以定义变量,使用这个自定义变量的方法和使用字面量的方法类似。比如定义一个变量myCustomVariable
1 |
<script id="javascriptTemplate" type="text/x-kendo-template"> |
2 |
# var myCustomVariable = "foo"; # |
嵌入式模板 vs 外部模板
Kendo UI 模板可以使用嵌入式模板和外部模板:
- inline: 使用JavaScript字符串定义
- external: 使用HTML Script 块定义
嵌入式模板使用比较简单的情况,对于比较复杂的模板一般使用外部模板。外部模板的定义的基本格式如下:
1 |
<script type="text/x-kendo-template" id="myTemplate"> |
2 |
<!--Template content here--> |
外部模板必须定义一个id,这样你才可以通过id 来访问这个模板:
1 |
//extract the template content from script tag |
2 |
var templateContent = $("#myTemplate").html(); |
4 |
var template = kendo.template(templateContent); |
使用外部模板,你可以使用任意合法的HTML元素和JavaScirpt,只需语法正确,比如:
3 |
<script type="text/x-kendo-template" id="myTemplate"> |
5 |
<li>#: name # is Admin</li> |
7 |
<li>#: name # is User</li> |
11 |
<script type="text/javascript"> |
12 |
var templateContent = $("#myTemplate").html(); |
13 |
var template = kendo.template(templateContent); |
15 |
//Create some dummy data |
17 |
{ name: "John", isAdmin: false }, |
18 |
{ name: "Alex", isAdmin: true } |
21 |
var result = kendo.render(template, data); //render the template |
23 |
$("#users").html(result); //append the result to the page |

- Kendo UI开发教程(16): Kendo MVVM 数据绑定(五) Events
本篇和Kendo UI开发教程(14): Kendo MVVM 数据绑定(三) Click类似,为事件绑定的一般形式.Events绑定支持将ViewModel的方法绑定到DOM元素的事件处理(如鼠标事 ...
- Kendo UI开发教程(9): Kendo UI Validator 概述
Kendo UI Validator 支持了客户端校验的便捷方法,它基于HTML 5 的表单校验功能,支持很多内置的校验规则,同时也提供了自定义规则的便捷方法. 完整的Kendo UI 的Valida ...
- Kendo UI开发教程(6): Kendo DataSource 概述
Kendo 的数据源支持本地数据源(JavaScript 对象数组),或者远程数据源(XML, JSON, JSONP),支持CRUD操作(创建,读取,更新和删除操作),并支持排序,分页,过滤,分组和 ...
- Kendo UI开发教程(22): Kendo MVVM 数据绑定(十一) Value
Value绑定可以把ViewModel的某个属性绑定到DOM元素或某个UI组件的Value属性.当用户修改DOM元素或UI组件的值时,绑定的ViewModel的值也随之发生改名.同样,如果ViewMo ...
- Kendo UI开发教程(8): Kendo UI 特效概述
Kendo UI Fx 提供了一个丰富,可扩展,性能经过优化的工具集合用来完成HTML元素的过渡显示.每种特效近可能的使用CSS Transition ,对于一些老版本浏览器使用修改属性的方法作为补充 ...
- Kendo UI开发教程(21): Kendo MVVM 数据绑定(十) Source
Source绑定可以把ViewModel的值和由Kendo模板定义的目标元素绑定,如果ViewModel的值发生变化,被绑定的目标元素也随之发生变化.模板由属性data-template指定,它的值为 ...
- Kendo UI开发教程(20): Kendo MVVM 数据绑定(九) Text
Text绑定可以使用ViewModel来设置DOM元素的文本属性,如果需要设置input,textarea,或select的显示,需要使用value属性. 1 <span data-bind=& ...
- Kendo UI开发教程(14): Kendo MVVM 数据绑定(三) Click
Click绑定可以把由ViewModel定义的方法不绑定到目标DOM的click事件.当点击目标DOM元素时触发ViewModel的对应方法.例如: 使用Click绑定 1 <div id=&q ...
- [置顶] Kendo UI开发教程: Kendo UI 示例及总结
前面基本介绍完Kendo UI开发的基本概念和开发步骤,Kendo UI的示例网站为http://demos.kendoui.com/ ,包含了三个部分 Web DemoMobile DemoData ...
- js模块开发
js模块开发(一) 现在嵌入页面里面的javascript代码越来越复杂,于是可能依赖也越来越严重,使用别人开发的js也越来越多,于是在理想情况下,我们只需要实现核心的业务逻辑,其他都可以加载别人已经 ...
- 玩转Web之servlet(四)---B/S是怎样使用http协议完毕通信过程的
在上一篇文章中,我简单的说了一下B/S架构的流程图,关于浏览器和server之间的通信过程知识含糊的说了一下,在这篇文章中我再总结一下B/S架构里是怎样利用http协议去完毕通信的. (一)通讯过程 ...
- sql点滴37—mysql中的错误Data too long for column '' at row 1
原文:sql点滴37-mysql中的错误Data too long for column '' at row 1 1.MYSQL服务 我的电脑——(右键)管理——服务与应用程序——服务——MYSQ ...
- xheditor 进阶
xhEditor提供两种方式初始化编辑器: 方法1:利用class属性来初始化和传递各种初始化参数,例: class="xheditor {skin:'default'}" 方法 ...
- vector成员函数解析
vector线性集装箱,其元素颜格排序根据线性序列,和动态数组很阶段似,像阵列,它的元素被存储在连续的存储空间,这也意味着,我们不仅能够使用迭代器(iterator)访问元素,也可以用一个指针访问偏移 ...
- log4net项目中如何配置,以下详解
log4net.config配置文件 <?xml version="1.0" encoding="utf-8"?> <log4net debu ...
- 【工作笔记四】去掉a标签超链接的虚线框的方法
a{ blr:expression(this.onFocus=this.blur()); /* IE Opera */ outline:none; /* FF Opera */ } a:focus{ ...
- 更改MYSQL数据库不区分大小写表名
今天郁闷死了,在LINUX下调一个程序老说找不到表,但是我明明是建了表的,在MYSQL的命令行下也可以查到,为什么程序就找不到表呢? 后来请教了一个老师才搞定,原来是LINUX下的MYSQL默认是要区 ...
- 开启apache服务
安装后如果需要手动添加Sevice,可以按照如下方法: Apache版本:httpd-2.2.15_win32 Apache Service Monitor 提示:“No services insta ...
- SufaceView(绘图类)
public class MainActivity extends Activity { GrameView grameView; @Override public void onCreate(Bun ...