Ember属性和javascript链接
ember properties and javascript chaining
查看ember.js文档(http://emberjs.com/guides/object-model/computed-properties/)我了解如何使用属性,但之前没有在对象声明中运行过链接方法。
在我看来,property
方法应该立即被调用,但情况似乎并非如此。
Person = Ember.Object.extend({
// these will be supplied by `create`
firstName: null,
lastName: null,
fullName: function() {
var firstName = this.get('firstName');
var lastName = this.get('lastName');
return firstName + ' ' + lastName;
}.property('firstName', 'lastName')
});
var tom = Person.create({
firstName: "Tom",
lastName: "Dale"
});
tom.get('fullName') // "Tom Dale"
如果我做一个小的js片段,这里似乎没有做任何事情。http://jsfiddle.net/xXStr/
var a = {
what: function() {
alert ("oh yeah");
},
bar: function() {
alert ("bar");
return this;
}.what()
}
a.bar();
对象声明中的链式方法是如何工作的?
如果你查看Ember源代码,你会发现Function
原型被扩展为包含property
方法。
Function.prototype.property = function() {
var ret = Ember.computed(this);
return ret.property.apply(ret, arguments);
};
深入观察,我们看到Ember.computed
返回Ember.Computed
的一个实例。
Ember.computed = function(func) {
var args;
if (arguments.length > 1) {
args = a_slice.call(arguments, 0, -1);
func = a_slice.call(arguments, -1)[0];
}
var cp = new ComputedProperty(func);
if (args) {
cp.property.apply(cp, args);
}
return cp;
};
// ...
function ComputedProperty(func, opts) {
this.func = func;
this._cacheable = (opts && opts.cacheable !== undefined) ? opts.cacheable : true;
this._dependentKeys = opts && opts.dependentKeys;
}
Ember.ComputedProperty = ComputedProperty;
因此,无论何时写入
foo: function() {
return this.get('bar')
}.property('bar')
你实际上是创建一个匿名函数,然后立即调用它的property
方法,返回Ember.ComputedProperty
的实例。这是分配给foo
属性的内容
相关文章:
- 当链接javascript承诺时,如何处理then()函数中的条件
- 如何在grails中链接javascript引导程序方法
- 在PHP代码中单击链接javascript函数调用
- 随机链接javascript以忽略当前页面
- 如何链接javascript承诺和错误
- 在从ruby on rails中的资产管道加载的布局上链接Javascript函数
- 用链接 JavaScript 替换 HTML 的问题
- 突出显示当前链接 Javascript
- 如何在数组中添加超链接(Javascript)
- 有没有一种简单的方法可以在节点上双击 vis.js 创建超链接/javascript-action
- Facebook分享深度链接 - Javascript
- 链接 JavaScript 变量
- 在 AJAX 成功的新选项卡中打开链接 - Javascript
- window.打开一个新页面,然后单击新页面中的链接 - JavaScript
- 链接 JavaScript 函数
- 在 PHP 中链接 Javascript 文件
- 在拖动事件期间禁用链接 Javascript
- 文本框使用 if else 语句打开我的链接 JavaScript
- ajax脚本运行后指向页面的链接(javascript锚点?)
- 动态创建链接Javascript