Kendo UI 框架提供了一个易用,高性能的JavaScript模板引擎。通过模板可以创建一个HTML片段然后可以和JavaScript数据合并成最终的HTML元素。

Kendo 模板侧重于UI显示,支持关键的模板功能,着重于性能而不是语法上的方便。

模板语法

Kendo 模板使用了一种称为“#”的语法形式,使用这种语法,#用来表明模板中的某个部分可以使用JavaScript数据来替代。

用三种方式使用#语法:

  1. 显示字面量 #=#
  2. 显示HTML元素 #:#
  3. 执行任意的Javascript代码  #if() {# …#}#

注意:如何你的模板中包含有“#”字符,不是用来绑定的部分,你必须使用转义字符,否则会引起模板编译错误。 你可以通过“\\#”转义需要显示“#”的地方。

显示原始数据

显示数据的本来的形式是使用模板的一个最基本的用法,使用Kendo UI模板,可以使用如下类似的代码:

var template = kendo.template("<div id='box'>#= firstName #</div>")<div id='box'>#= firstName #</div>")

上面代码创建了“编译”过的嵌入式模板,使用这个模板可以用来显示数据,比如下面的代码

<div id="example"></div>
<script>var template = kendo.template("<div id='box'>#= firstName #</div>");var data = { firstName: "Todd" }; //A value in JavaScript/JSONvar result = template(data); /Pass the data to the compiled template$("#example").html(result); //display the result
</script>"example"></div>
<script>var template = kendo.template("<div id='box'>#= firstName #</div>");var data = { firstName: "Todd" }; //A value in JavaScript/JSONvar result = template(data); /Pass the data to the compiled template$("#example").html(result); //display the result
</script>

通过模板与数据的合并,最终显示“Todd”。

显示HTML数据

如果你需要显示经过HTML编码过的数据,使用Kendo UI模板可以自动处理这些编码过的HTML元素,但需要使用不同的语法 #: …#,例如:

var template = kendo.template("<div id='box'>#: firstName #</div>");<div id='box'>#: firstName #</div>");

完整的示例如下:

<div id="example"></div>
<script>var template = kendo.template("<div id='box'>#: firstName #</div>");var data = { firstName: "<b>Todd</b>" }; //Data with HTML tagsvar result = template(data); //Pass the data to the compiled template$("#example").html(result); //display the resulting encoded HTML Output (<b>Todd</b>)
</script>div id="example"></div>
<script>var template = kendo.template("<div id='box'>#: firstName #</div>");var data = { firstName: "<b>Todd</b>" }; //Data with HTML tagsvar result = template(data); //Pass the data to the compiled template$("#example").html(result); //display the resulting encoded HTML Output (<b>Todd</b>)
</script>

这个例子的显示结果为

<b>Todd </b>b>Todd </b>

而不是 Todd ,如果需要显示 Todd ,则需要使用#= # 语法,显示HTML编码的一个主要作用是当你无需再模板中显示HTML标记,而是把整个标记和其内容作为字符串显示出来。

使用外部模板和表达式

在模板中也可以使用表达式,Kendo UI 支持者模板中执行JavaScript代码,在模板中使用JavaScript代码的方法是在JavaScript语句的前后加上#,比如下面模板显示一组列表:

<script id="javascriptTemplate" type="text/x-kendo-template">
<ul>
# for (var i = 0; i < data.length; i++) { #<li>#= data[i] #</li>
# } #
</ul>
</script>script id="javascriptTemplate" type="text/x-kendo-template">
<ul>
# for (var i = 0; i < data.length; i++) { #<li>#= data[i] #</li>
# } #
</ul>
</script>

然后为了使用这个模板,可以通过模板的id ,通过kendo.template 创建这个模板,然后和数据合并,比如:

<div id="example"></div><script id="javascriptTemplate" type="text/x-kendo-template"><ul># for (var i = 0; i < data.length; i++) { #<li>#= data[i] #</li># } #</ul>
</script><script type="text/javascript">//Get the external template definition using a jQuery selectorvar template = kendo.template($("#javascriptTemplate").html());//Create some dummy datavar data = ["Todd", "Steve", "Burke"];var result = template(data); //Execute the template$("#example").html(result); //Append the result
</script>div id="example"></div><script id="javascriptTemplate" type="text/x-kendo-template"><ul># for (var i = 0; i < data.length; i++) { #<li>#= data[i] #</li># } #</ul>
</script><script type="text/javascript">//Get the external template definition using a jQuery selectorvar template = kendo.template($("#javascriptTemplate").html());//Create some dummy datavar data = ["Todd", "Steve", "Burke"];var result = template(data); //Execute the template$("#example").html(result); //Append the result
</script>

可以看到模板执行了JavaScipt的for 循环,并且我们使用了外部模板,外部模板的定义使用type=”text/x-kendo-template”来定义,并通过其id来访问这个外表模板。 
在模板中也可以定义变量,使用这个自定义变量的方法和使用字面量的方法类似。比如定义一个变量myCustomVariable

<script id="javascriptTemplate" type="text/x-kendo-template"># var myCustomVariable = "foo"; #<p>#= myCustomVariable #</p>
</script>script id="javascriptTemplate" type="text/x-kendo-template"># var myCustomVariable = "foo"; #<p>#= myCustomVariable #</p>
</script>

嵌入式模板 vs 外部模板

Kendo UI 模板可以使用嵌入式模板和外部模板:

  • inline: 使用JavaScript字符串定义
  • external: 使用HTML Script 块定义

嵌入式模板使用比较简单的情况,对于比较复杂的模板一般使用外部模板。外部模板的定义的基本格式如下:

<script type="text/x-kendo-template" id="myTemplate"><!--Template content here-->
</script>script type="text/x-kendo-template" id="myTemplate"><!--Template content here-->
</script>

外部模板必须定义一个id,这样你才可以通过id 来访问这个模板:

//extract the template content from script tag
var templateContent = $("#myTemplate").html();
//compile a template
var template = kendo.template(templateContent);
var templateContent = $("#myTemplate").html();
//compile a template
var template = kendo.template(templateContent);

使用外部模板,你可以使用任意合法的HTML元素和JavaScirpt,只需语法正确,比如:

<ul id="users"></ul><script type="text/x-kendo-template" id="myTemplate">#if(isAdmin){#<li>#: name # is Admin</li>#}else{#<li>#: name # is User</li>#}#
</script><script type="text/javascript">var templateContent = $("#myTemplate").html();var template = kendo.template(templateContent);//Create some dummy datavar data = [{ name: "John", isAdmin: false },{ name: "Alex", isAdmin: true }];var result = kendo.render(template, data); //render the template$("#users").html(result); //append the result to the page
</script>ul id="users"></ul><script type="text/x-kendo-template" id="myTemplate">#if(isAdmin){#<li>#: name # is Admin</li>#}else{#<li>#: name # is User</li>#}#
</script><script type="text/javascript">var templateContent = $("#myTemplate").html();var template = kendo.template(templateContent);//Create some dummy datavar data = [{ name: "John", isAdmin: false },{ name: "Alex", isAdmin: true }];var result = kendo.render(template, data); //render the template$("#users").html(result); //append the result to the page
</script>

kendoUI模板概述(template)相关推荐

  1. KendoUI模板引擎 - 概述

    基本用法 KendoUI模板引擎融合了包含"#号语法"(Hash Syntax, e.g. #= javascript property #) 的HTML和JS对象/数组,产生新的 ...

  2. Ember——在构建Ember应用程序时,我们会使用到六个主要部件:应用程序(Application)、模型(Model)、视图(View)、模板(Template)、路由(...

    在构建Ember应用程序时,我们会使用到六个主要部件: 模板(Template).应用程序(Application).视图(View).路由(Routing).控制器(Controller)和模型(M ...

  3. OpenCV模板匹配Template Matching

    OpenCV模板匹配Template Matching 模板匹配Template Matching 目标 理论 什么是模板匹配? OpenCV提供哪些匹配方法? 代码 解释 结果 模板匹配Templa ...

  4. c++模板模式template

    模板模式template 概念 应用场景 角色和职责 案例 概念 Template Method模式也叫模板方法模式,是行为模式之一,它把具有特定步骤算法中的某些必要的处理委让给抽象方法,通过子类继承 ...

  5. 模板编译template的背后,究竟发生了什么事?带你了解template的纸短情长

    解析模板编译template的背后发生了什么 一.

  6. 模板(Template)

    最近阅读google chromium base container stack_container代码,深刻感觉到基础知识不扎实. // Casts the buffer in its right ...

  7. Drupal 7 主题模板概述

    Drupal是一个开源的内容管理系统(CMS) 平台,它是用PHP写成的.主要用于构造提供多种功能和服务的动态网站,这些功能包括用户管理(UserAdministration).发布工作流 (Publ ...

  8. C++ - 类模板(class template) 详解 及 代码

    类模板(class template) 详解 及 代码 本文地址: http://blog.csdn.net/caroline_wendy/article/details/16906827 类模板(c ...

  9. Python+OpenCV:模板匹配(Template Matching)

    Python+OpenCV:模板匹配(Template Matching) Template Matching with Single Objects ######################## ...

最新文章

  1. access 打印预览 代码_PDFFactory pro虚拟打印机下载-PDFFactory官方版下载
  2. 一个讲解WiFi和蓝牙协议的视频课程网站
  3. marin 初学LINUX之路
  4. Jest 测试框架 expect 和 匹配器 matcher 的设计原理解析
  5. SQL编程题-----1
  6. mysql php pdo例_PHP的PDO操作实例
  7. google 确定某点海拔高_“湘能楚天”牌变电站的威宁之旅(一)|高海拔下如何实现与茫茫雪原环境的共生?...
  8. 【小技巧】【map】【set】【Java】map /set 的遍历
  9. 冠榕智能灯光控制协议分析(node-controller)
  10. vscode插件remote-ssh安装及ssh错误
  11. python云计算有哪些岗位_云计算就业前景怎么样,包括哪些岗位,各岗位主要工作是什么?...
  12. uniapp引入腾讯防水墙
  13. 创新电影院布局5G+4K,移动电影院成放映领域的“黑科技”
  14. 账单分期和最低还款之间的差距你绝对想不到,以广发卡为例子,看看自动分期的好处。
  15. 小米路由器安装mysql_小米路由器安装和设置方法(图文教程)
  16. 【sudo错误】xxx is not in the sudoers file.This incident will be reported解决
  17. Java开发失业,摆摊卖梨膏罐头!
  18. CGB2105-Day19
  19. LCD1602的解读(详细步骤分析)
  20. 淮海工学院计算机学院团委,我校第三届“我最喜好的先生”评比运动圆满结束...

热门文章

  1. EfficientNet网络详解
  2. arduino设备跑 ros service server 的波折记
  3. 发布:世界上第一个小米平板4上的Debian Linux 刷机包
  4. 狼人杀c语言代码,1089 狼人杀-简单版——C/C++实现
  5. 以终为始,向死而生——5月份英语总结
  6. Python最抢手、Java最流行、Go最有前途,7000位程序员揭秘2019软件开发现状
  7. linux 打开三维stl文件,三维stl文件查看工具下载
  8. Matlab读取并输出stl文件
  9. 倒计时2天!2022腾讯全球数字生态大会大数据专场内容抢先看
  10. 过压过流保护芯片,过压过流IC电路图