让我们说我希望我的页面标题会根据一个非常简单的字段而改变,Ember的做法是什么?
我真的不明白Ember中的绑定,即使我只需要1个字段,我还要创建一个对象吗?
Ember是否支持双向绑定?如果它这样做我怎么能将绑定限制为单向?
我觉得我对Ember数据和常规Ember有点困惑,当我使用Ember数据时,我是否需要关心绑定?
提前致谢 :)
Kin*_*n2k 11
这有点模糊(或者我只是不完全理解你在问什么),所以我会采取猎枪方式,当你提出更多问题时我们可以缩小范围.
前言:Ember Data是一个客户端记录管理库,Ember在没有它的情况下完全正常工作.
页面的标题有点棘手,因为它超出了可视dom的范围,但处理它的最佳方法是观察者.在下面的示例中,随着title属性在我的应用程序控制器内部发生变化,我正在设置document.title.
App.ApplicationController = Em.Controller.extend({
title:undefined,
watchTitle: function(){
document.title = this.get('title');
}.observes('title')
})
Run Code Online (Sandbox Code Playgroud)
示例:http://emberjs.jsbin.com/haducafu/1
Ember确实支持单向绑定(尽管很少需要关心绑定).通常,您希望关注依赖属性.例如,如果属性a已更改,则属性b应更新等.在下面的情况中,b是计算属性,取决于a,如果更改,则b为脏,并且ember应重新计算它.
App.ApplicationController = Em.Controller.extend({
a:'foo',
b: function(){
return 'Hello: ' + this.get('a');
}.property('a')
})
Run Code Online (Sandbox Code Playgroud)
示例:http://jsbin.com/haducafu/2/edit
另外Ember可以做简单的绑定(你实际上可以跳过定义名称,因为ember会在第一次使用它时定义它).
App.ApplicationController = Em.Controller.extend({
name:undefined
});
<h2>Hello {{name}}</h2>
Name: {{input value=name}}
Run Code Online (Sandbox Code Playgroud)
示例:http://jsbin.com/haducafu/3/edit
一种方法将从其主机属性获取值,除非您设置它,如果您设置它,它将停止在依赖属性之后并成为它自己的(不修改依赖属性).
只读将从主机属性中获取值,如果您尝试设置它,它将吹出块.
App.ApplicationController = Em.Controller.extend({
name:'billy',
oneWay: Em.computed.oneWay('name'),
readOnly: Em.computed.readOnly('name')
});
Run Code Online (Sandbox Code Playgroud)
首先尝试更改名称,他们将全部更新,然后更改oneWay,它将分歧,永远不会返回,然后更改readOnly,它将抛出错误.
示例:http://jsbin.com/haducafu/4/edit
| 归档时间: |
|
| 查看次数: |
5252 次 |
| 最近记录: |