2012-10-30 125 views
3

我已成功創建並綁定了計算屬性,但是如何在代碼的其他部分手動獲取它們?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會拋出'找不到函數'的錯誤,那麼我怎麼才能訪問這個屬性而不是綁定?

+0

你是什麼看看喲你從'displayValue1'檢查對象?這應該返回字符串,它看起來是正確的。 – mehulkar

回答

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

+0

所以,這是我認爲應該工作,所以在我的代碼中必須有其他奇怪的事情。當我綁定到屬性時,我得到一個字符串,但是當我打電話給「獲得」時,我不......至少我知道理論上我做得對,謝謝。 – user1785797