Source绑定可以把ViewModel的值和由Kendo模板定义的目标元素绑定,如果ViewModel的值发生变化,被绑定的目标元素也随之发生变化。
模板由属性data-template指定,它的值为某个script定义的模板的id.如果没有指明模板,则根据元素的标记使用缺省的模版。
Source绑定到数组
当ViewModel的值 为一数组时,那么通过Source绑定到模板时,会把数组中每个元素逐个应用到模板,最后的输出为应用这些模板的结果的综合。 添加删除数组中的内容,显示的内容也随之变化。
注:绑定到ViewModel数组时,Source指明的为单个跟元素名称,例如:
1 |
< ul data-template = "ul-template" data-bind = "source: products" > |
3 |
< script id = "ul-template" type = "text/x-kendo-template" > |
5 |
id: < span data-bind = "text: id" ></ span > |
6 |
name: < span data-bind = "text: name" ></ span > |
10 |
var viewModel = kendo.observable({ |
12 |
{ id: 1, name: "Coffee" }, |
13 |
{ id: 2, name: "Tea" }, |
14 |
{ id: 3, name: "Juice" } |
18 |
kendo.bind($("ul"), viewModel); |
这个例子会输出三个li元素–每个对应到products数组中一个元素,下面为输出的HTML内容:
4 |
name: < span >Coffee</ span > |
12 |
name: < span >Juice</ span > |

如果ViewModel绑定的数组的内容为简单类型(如数字,字符串,日期),这时在模板中需要使用”this”关键字来引用当前数组项:
1 |
< ul data-template = "ul-template" data-bind = "source: products" > |
3 |
< script id = "ul-template" type = "text/x-kendo-template" > |
4 |
< li data-bind = "text: this" ></ li > |
7 |
var viewModel = kendo.observable({ |
8 |
products: [ "Coffee", "Tea", "Juice" ] |
11 |
kendo.bind($("ul"), viewModel); |
输出内容如下:
Source绑定到非数组
source绑定也支持绑定到非数组值,此时在模板中引用到ViewModel的某个属性,最终的结果为模板使用ViewModel后的结果。
1 |
< div data-template = "div-template" data-bind = "source: person" > |
2 |
< script id = "div-template" type = "text/x-kendo-template" > |
3 |
Name: < span data-bind = "text: name" ></ span > |
7 |
var viewModel = kendo.observable({ |
13 |
kendo.bind($("div"), viewModel); |
输出:
2 |
Name: < span >John Doe</ span > |
你也可以直接绑定到ViewModel对象本身,此时可以使用把source 的值设置为“this”,例如:
1 |
< div data-template = "div-template" data-bind = "source: this" > |
2 |
< script id = "div-template" type = "text/x-kendo-template" > |
3 |
Name: < span data-bind = "text: name" ></ span > |
7 |
var viewModel = kendo.observable({ |
11 |
kendo.bind($("div"), viewModel); |
结果如下:
2 |
Name: < span >John Doe</ span > |
Source绑定Select元素
当数组绑定到select元素时,就创建多个option元素。
1 |
< select data-bind = "source: colors" ></ select > |
3 |
var viewModel = kendo.observable({ |
4 |
colors: [ "Red", "Green", "Blue" ] |
7 |
kendo.bind($("select"), viewModel); |
输出的HTML元素如下:
select元素也可以绑定到JavaScript对象数组(非简单类型),此时可以同时指定data-text-field,data-value-field 用来指定option元素的value和text属性,例如:
1 |
< select data-text-field = "name" data-value-field = "id" |
2 |
data-bind = "source: products" ></ select > |
4 |
var viewModel = kendo.observable({ |
6 |
{ id: 1, name: "Coffee" }, |
7 |
{ id: 2, name: "Tea" }, |
8 |
{ id: 3, name: "Juice" } |
12 |
kendo.bind($("select"), viewModel); |
输出如下:
2 |
< option value = "1" >Coffee</ option > |
3 |
< option value = "2" >Tea</ option > |
4 |
< option value = "3" >Juice</ option > |
- 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开发教程(7): Kendo UI 模板概述
Kendo UI 框架提供了一个易用,高性能的JavaScript模板引擎.通过模板可以创建一个HTML片段然后可以和JavaScript数据合并成最终的HTML元素. Kendo 模板侧重于UI显示 ...
- Kendo UI开发教程(8): Kendo UI 特效概述
Kendo UI Fx 提供了一个丰富,可扩展,性能经过优化的工具集合用来完成HTML元素的过渡显示.每种特效近可能的使用CSS Transition ,对于一些老版本浏览器使用修改属性的方法作为补充 ...
- Kendo UI开发教程(22): Kendo MVVM 数据绑定(十一) Value
Value绑定可以把ViewModel的某个属性绑定到DOM元素或某个UI组件的Value属性.当用户修改DOM元素或UI组件的值时,绑定的ViewModel的值也随之发生改名.同样,如果ViewMo ...
- Kendo UI开发教程(14): Kendo MVVM 数据绑定(三) Click
Click绑定可以把由ViewModel定义的方法不绑定到目标DOM的click事件.当点击目标DOM元素时触发ViewModel的对应方法.例如: 使用Click绑定 1 <div id=&q ...
- Kendo UI开发教程(20): Kendo MVVM 数据绑定(九) Text
Text绑定可以使用ViewModel来设置DOM元素的文本属性,如果需要设置input,textarea,或select的显示,需要使用value属性. 1 <span data-bind=& ...
- [置顶] Kendo UI开发教程: Kendo UI 示例及总结
前面基本介绍完Kendo UI开发的基本概念和开发步骤,Kendo UI的示例网站为http://demos.kendoui.com/ ,包含了三个部分 Web DemoMobile DemoData ...
随机推荐
- TCP之超时和重传
RTT:往返时间: RTO:Retransmission Timeout即超时重传时间: 关键点在于:超时和重传间隔的策略,即怎样确定超时间隔和重传间隔: TCP中的四个定时器:2MSL定时器:重传 ...
- 完整的RecylerView的使用方法和例子
一.RecylerView的特点 1. 不关心Item是否显示在正确的位置,通过设置不同LayoutManager 的实例让Item显示不同的风格. 2. 不关心 Item间如何分离.要定义It ...
- java.lang.NoClassDefFoundError: org.ksoap2.transport.HttpTransportSE异常处理
原因就是没有打包进去 因为引用进去 编译时没出出现问题 解决如下
- 在CentOS/RHEL/Scientific Linux 6下安装 LAMP
LAMP 是服务器系统中开源软件的一个完美组合.它是 Linux .Apache HTTP 服务器.MySQL 数据库.PHP(或者 Perl.Python)的第一个字母的缩写代码.对于很多系统管理员 ...
- AOP 笔记
http://blog.csdn.net/Intlgj/article/details/5671248 这篇文章里面介绍的非常好,值得阅读. 这里盗用里面的两张图片 [在没有AOP之前是这样的] [使 ...
- 处理IIS报“由于 Web 服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面”
“由于 Web 服务器上的“ISAPI 和 CGI 限制”列表设置,无法提供您请求的页面” 详细错误:HTTP 错误 404.2 - Not Found. 由于 Web 服务器上的“ISAPI 和 C ...
- 设置QPushButton的平面与突出(遍历控件)
#include "ui_maindialog.h" #include "maindialog.h" #include <QState> #incl ...
- hdu 2757 Ocean Currents(优先队列+bfs)
小伙伴们真心被这道题惊呆了!刚开始是读题,题目都把小伙伴惊呆了,题目都读不懂! 在前面猴子小伙伴的帮助下,理解了一点点,又偷偷的在纸上写写画画,明白了题意! 后来,你懂的,果断拿下!在拿下的过程也经过 ...
- Linux内核源代码解析之——我与神童聊Linux内核
本文原创为freas_1990,转载请标明出处:http://blog.csdn.net/freas_1990/article/details/11619609 我的朋友里,至少有2.5个神童. 有的 ...
- 在Vista以上版本运行WTL程序,有时候会提示“这个程序可能安装补正确...”的错误
在Win7/Vista下,如何以兼容模式运行exe? https://msdn.microsoft.com/en-us/library/dd371711(VS.85).aspx 问题描 ...