Qual é a melhor maneira de substituir Model.get (attr) no Backbone.js?
Estou usando o Backbone.js pela primeira vez e gostando até agora. Uma coisa que não consigo resolver no momento em atributos dinâmicos de modelos. Por exemplo, digamos que eu tenho um modelo de pessoa e desejo obter o nome completo:
var Person = Backbone.Model.extend({
getFullName: function () {
return this.get('firstName') + ' ' + this.get('surname');
}
});
Então eu poderia fazerperson.getFullName()
. Mas gostaria de mantê-lo consistente com os outros getters, mais comoperson.get('fullName')
. Não vejo como fazer isso sem substituir Person # get de maneira confusa. Ou essa é minha única opção?
Este é o que eu tenho até agora para a opção principal:
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);
}
}
});
Suponho que não seja terrível, mas parece que deveria haver uma maneira melho