Ember.js - 如何“获取”计算属性

时间:2012-10-30 14:30:21

标签: ember.js

我已经成功创建并绑定了计算属性,但是如何在代码的其他部分手动获取它们?

App.Test = Ember.Object.extend(
   value: "1"
   unit: "INCH"

   display: (->
     value = this.get('value')
     unit = this.get('unit')
     return "#{value} #{unit}"
   ).property('value', 'unit')
)

如何在控制器中调用'display'方法?以下显示了我认为可行的内容......

myTest = App.Test.create()
displayValue1 = myTest.get('display')
displayValue2 = myTest.display()

displayValue1只返回一个对象,而不是一个字符串。 displayValue2抛出'找不到函数'错误。那么除了绑定之外我该如何访问这个属性呢?

1 个答案:

答案 0 :(得分:4)

将计算属性视为属性,而不是方法。即使它们包含一些逻辑,它们也是属性,所以你永远不应该将它们称为方法。

您可以使用经典Ember.get方法访问它们,如下所示:

MyApp.myObject = Ember.Object.create({
    name: "foo",
    surname: "bar",
    aComputedProperty: function() {
        return this.get('name') + ' ' + this.get('surname');
    }.property('name', 'surname')
});

MyApp.myObject.get('aComputedProperty'); // => 'foo bar'

您可以尝试使用此代码in this JSFiddle