在Ember中使计算属性绑定识别

时间:2013-02-13 00:19:49

标签: javascript ember.js handlebars.js

如果我在模板中使用计算属性,如何让模板知道状态已经以影响该计算值的方式发生了变化?

例如,如果我显示两个可以递增的数字及其总和,如下所示

App.ApplicationController = Ember.Controller.extend({
    x:0,
    y:0,
    sum: function(){return this.get("x") + this.get("y");}.property("content.sum"),
    incX: function(){ this.set("x", this.x+1);},
    incY: function(){ this.set("y", this.y+1);},
});
<script type="text/x-handlebars">
  <button {{action "incX"}}> {{x}} </button>
  <button {{action "incY"}}> {{y}} </button>
  <p> {{sum}} </p>
</script>

x和y值将在显示中更新,但总和不会更新。如何判断把手/余烬的总和是否依赖于x和y?

1 个答案:

答案 0 :(得分:5)

计算属性(.property(_))的参数不是您想要访问的参数,而是指定计算属性应该观察哪些值,并在任何这些值发生更改时重新计算。

在你的情况下:

sum: function() {
    return this.get("x") + this.get("y");
}
.property("x", "y")