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は「関数が見つかりません」というエラーをスローします。では、バインディング以外のこのプロパティにアクセスするにはどうすればよいですか?

4

1 に答える 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でこのコードを試すことができます。

于 2012-10-30T14:46:21.000 に答える