Ski*_*ick 22 javascript backbone.js
我第一次使用Backbone.js,并且喜欢它到目前为止.有一件事我现在无法在模型的动态属性中解决.例如,假设我有一个Person模型,我想得到他们的全名:
var Person = Backbone.Model.extend({
getFullName: function () {
return this.get('firstName') + ' ' + this.get('surname');
}
});
Run Code Online (Sandbox Code Playgroud)
然后我就能做到person.getFullName()
.但是我想让它与其他吸气剂保持一致,更像是person.get('fullName')
.如果不凌乱地覆盖Person#get,我不会看到如何做到这一点.或者这是我唯一的选择?
这是我迄今为止的最重要的选择:
var Person = Backbone.Model.extend({
get: function (attr) {
switch (attr) {
case 'fullName':
return this.get('firstName') + ' ' + this.get('surname');
break;
case 'somethingElse':
return this.doSomethingClever();
break;
default:
return Backbone.Model.prototype.get.call(this, attr);
}
}
});
Run Code Online (Sandbox Code Playgroud)
我想它并不可怕,但似乎应该有更好的方法.
小智 52
这会更简单吗?
var Person = Backbone.Model.extend({
get: function (attr) {
if (typeof this[attr] == 'function')
{
return this[attr]();
}
return Backbone.Model.prototype.get.call(this, attr);
}
});
Run Code Online (Sandbox Code Playgroud)
这样,您还可以使用函数覆盖现有属性.你怎么看?
归档时间: |
|
查看次数: |
10264 次 |
最近记录: |