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

3
我已经成功创建和绑定计算属性,但是如何在代码的其他部分手动获取它们呢?
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则会抛出"未找到函数"的错误。那么我该如何访问这个属性,除了绑定之外?


当您检查来自displayValue1的对象时,您看到了什么?这应该返回字符串,“在我看来它看起来正确”。 - mehulkar
1个回答

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'

您可以在这个JSFiddle中尝试此代码。

所以,这就是我认为应该起作用的方式,因此我的代码中肯定还有其他奇怪的问题。当我将属性绑定时,我得到一个字符串,但是当我调用“get”时却没有...至少我理论上知道我做得对,谢谢。 - user1785797

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接