一个binding在两个属性之间创建一个链接,当一个改变时,另外一个被自动更新为一个新的值。

bindings可以在同一个对象中连接两个属性,或者用在两个不同的对象中。

不像大多数框架一样包含某种形式的绑定实现,在Ember.js中bindings可以被用于任何对象,而不仅仅是在viewsmodels之间。

1. Two-Way Binding

创建一个双向绑定的最简单的方法是使用一个计算的别名,它指定另一个对象的路径。

wife = Ember.Object.create({
householdIncome: 80000
}); Husband = Ember.Object.extend({
houseHoldIncome: Ember.computed.alias('wife.householdIncome')
}); husband = Husband.create({
wife: wife
}); husband.get('householdIncome');// //Someone gets raise.
wife.set('householdIncome', 90000);
husband.get('householdIncome');//
  • 注意绑定不会立刻更新。Ember等待直到同步改变之前所有的程序代码完成运行,所以当值是短暂的时候你可以改变一个绑定属性多次而无需担心同步绑定的开销。

2. One-Way Bindings

单向绑定只能在一个方向上传递变化。通常,单向绑定只是一个性能优化,你可以安全的使用双向绑定(当然,如果你只改变一个方向,双向绑定在事实上是单向绑定)。

有时单向绑定实现一些特定的行为是很有用的,例如一个默认的和另外一个属性一样的但是可以被重写。(如送货地址,开始与一个账单地址相同,但是稍后可以被改变)

user = Ember.Object.create({
fullName: "Kara Gates"
}); UserView = Ember.View.extend({
userName: Ember.computed.oneWay('user.fullName')
}); userView = UserView.create({
user: user
}); //Changing the name of the user object changes
//the value on the view
user.set('fullName', "Krang Gates");
//userView.userName will become "Krang Gates" //..but changes to the view don't make it back to the object
userView.setr('userName', "Truckasaurus Gates");
user.get('fullName');//"Krang Gates"

2.6 The Object Model -- Bindings的更多相关文章

  1. 2.7 The Object Model -- Bindings, Observers, Computed Properties:What do I use when?

    有时候新用户在使用计算属性.绑定和监视者时感到困惑.下面是一些指导方针: 1. 使用computed properties来合成其他属性,以构建新的属性.computed properties不应该包 ...

  2. Selenium的PO模式(Page Object Model)[python版]

     Page Object Model 简称POM  普通的测试用例代码: .... #测试用例 def test_login_mail(self): driver = self.driver driv ...

  3. 在C#开发中如何使用Client Object Model客户端代码获得SharePoint 网站、列表的权限情况

    自从人类学会了使用火,烤制的方式替代了人类的消化系统部分功能,从此人类的消化系统更加简单,加速了人脑的进化:自从SharePoint 2010开始有了Client Side Object Model ...

  4. Selenium的PO模式(Page Object Model)|(Selenium Webdriver For Python)

            研究Selenium + python 自动化测试有近两个月了,不能说非常熟练,起码对selenium自动化的执行有了深入的认识. 从最初无结构的代码,到类的使用,方法封装,从原始函数 ...

  5. 解决在使用client object model的时候报“object does not belong to a list”错误

    在查看别人代码的时候,发现了个有意思的问题,使用client object model将一个文件check in 我使用的是如下语句获取file Microsoft.SharePoint.Client ...

  6. Page Object Model (Selenium, Python)

    时间 2015-06-15 00:11:56  Qxf2 blog 原文  http://qxf2.com/blog/page-object-model-selenium-python/ 主题 Sel ...

  7. SharePoint Client Object Model API 介绍以及工作原理解析

    CSOM和ServerAPI 的对比 SharePoint从2010开始引入了Client Object Model的API(后文中用CSOM来代替),从名字来看,我们可以简单的看出,该API是面向客 ...

  8. BOM (Browser Object Model) 浏览器对象模型

    l对象的角色,因此所有在全局作用域中声明的变量/函数都会变成window对象的属性和方法; // PS:尝试访问未声明的变量会抛出错误,但是通过查询window对象,可以知道某个可能未声明的对象是否存 ...

  9. 文本对象模型(Document Object Model)

    本文内容: 1. 概述 2. DOM中的节点类型 3. DOM节点的选取 4. 存取元素属性 5.DOM元素的增删 6.小结 ★ 概述 文本对象模型(DOM)是一个能够让程序和脚本动态访问和更新文档内 ...

随机推荐

  1. android 过USB-IF測试注意事项及改动

    USB IF本身是个自愿性的标志(logo)认证. 使用或贴有USB标志的产品都需接受这项測试.其用意是确保全部USB装置的品质都符合要求.产品接受測试的方法有两种:參加USB- IF赞助的兼容性測试 ...

  2. float类型如何转换为string类型

    在一些很大的float类型的地方会用科学记数法表示,这个时候如果想完整记录下来,还是得转字符串,这里书写一个float类型转string类型的方法 <?php function float_to ...

  3. MySQL技术内幕:SQL编程 第2章 数据类型 读书笔记

    2.1 类型属性 2.1.1 UNSIGNED 数字无符号化, INT的值 -2147483648 ~ 2147483647  INT UNSIGNED的值 0 ~ 4294967295 int a ...

  4. laravel 模版赋值

    1)一般赋值是直接用view助手函数返回的 return view('Index/index', ['key'=>'value']); 2)一般做系统时,我们都会有一个共同控制器,其他控制器继承 ...

  5. docker tag 详解

    docker tag 用于给镜像打标签,语法如下: docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG] ① 比如我现在有一个 centos 镜像: [ro ...

  6. django restframework 教程之Serialization(序列化)

    介绍 本教程将会通过创建一个简单的粘贴代码项目,突出显示WebAPI,过程中,会介绍组成REST框架的各种组件,让你全面了解如何配合使用. 环境设置 建议使用virtualenv建立新的虚拟环境,确保 ...

  7. C、C++编程入口,常见的编程题

    1.设计一个从5个数中取最小数和最大数的程序. 2.#include<stdio.h> 3.int min(int a[],int i); 4.int max(int a[],int i) ...

  8. 【黑金ZYNQ7000系列原创视频教程】02.视频接口——hdmi编码输出实验

    黑金论坛地址: http://www.heijin.org/forum.php?mod=viewthread&tid=36636&extra=page%3D1 爱奇艺地址: http: ...

  9. [UML]UML 教程 - 第二部分

    UML作为软件开发典型的开发过程 业务过程模型创建 业务过程模型被用来定义发生在企业或组织内部的高级业务活动和业务过程,并且是建立用例模型的基础.一般来说业务过程模型比一个软件系统所能实现的更多(比如 ...

  10. WCF(四) 深入契约

    服务契约中的请求-响应操作 1.请求-响应模式 [OperationContract]//1默认就是 请求-相应 Requst- Replay DateTime GetDateTime(); [Ope ...