Backbone.JS如何处理具有计算属性的模型

Asa*_*ers 6 mustache backbone.js

我正在使用带有Mustache的Backbone.JS,所以为了渲染我的tempaltes,我调用MyModel.toJSON().这使我只能访问属性.我怎样才能拥有一些始终计算的属性?

我查看了Backbone.JS文档,它可能会覆盖validate(),但这似乎是一个黑客,可能会导致无限循环.

我还尝试将属性设为函数而不是值,但是当我尝试使用它时,Mustache没有得到值.

abr*_*ham 3

这就是我目前正在做的。我在初始化模型时进行计算,并添加一个侦听器来自动重新计算模型的更改。

...
initialize: function() {
  console.log('Lead:initialize');
  _.bindAll(this, 'validate', 'calculate');
  this.bind('change', this.setCalculations, this);
  this.setCalculations();
},
setCalculations: function() {
  this.set({ calculations: this.calculate() }, { silent: true });
},
calculate: function() {
  // do the calculations and return
},
...
Run Code Online (Sandbox Code Playgroud)