2016-05-06 3 views
0

私はエンバーモデルBook与えられたことを見ました。エンバーJSプロパティアクセサ

この表記は複雑でエラーが発生しやすい(IDEサポートなし)ようです。

  • book.title
  • かさえbook.title():なぜプロパティは次のようにアクセスすることができないのですか?

これを行う技術的な理由はありますか、それともJSでそれを行うのは "良い方法"ですか?

私はこの質問が愚かではないことを願っています。私はそれらのJSフレームワークにはかなり新しいです。

ありがとうございました。

+0

これはJSに固有のものではなく、Getメソッドは、パラメータを受け取り、book.title、book.prefaceなどのように複数のメソッドを作成するのではなく、その値を返す単純なメソッドです。 – apesa

+0

Okそれは理にかなっていますが、それは開発者が自分で物事を処理するよう強制します。これは便利だが、物事を書くときにはあまり効果がないと思われる –

答えて

1

答えは少し複雑です。私は可能な限り簡潔に説明しようとします。 Emberのプロパティを計算して観察することができます。私はこれやった場合、たとえば、あなたの例では:

export default Model.extend({ 
    title: DS.attr('string'), 
    author: DS.attr('string'), 
    displayName: function(){ 
    return this.get('title') + " By: " + this.get('author'); 
    }.property('title','author') 
}); 

をだから今、私は私が得る(「のdisplayName」)を呼び出すときに、2つの他のproperties.soに依存計算された性質を持っています。プロパティーが観察されたり、計算されたり、チェーン内で支柱が使用されているかどうかについては、私は心配する必要はありません。バインディングや内蔵されているemberのすべてのものが正しく動作することも保証します。

Emberの原則の1つは、発信者が、エムバーメタルの内部構造がどのように動作し、オブジェクトを処理するかを心配する必要がないことです。

またに.get()と.SETを使用して()の規則は、このことができますUniform access principle

希望に準拠しています。

+0

'book.title'のようなプロパティにアクセスできると仮定した場合、' displayName'メソッドの実装は 'return this.title +"と書くことができます: "+ this.author 'を呼び出すと、' book.displayName'でアクセスすることができます(これは括弧も使えます)。だから私はまだこれが賢明なことではないと思います。申し訳ありませんが、私はあなたのポイントを得ることはできません:( –

関連する問題