2017-09-08 7 views
0

私はコンポーネントが一方向バインディングをどのようにしているかを模倣しようとしていますが、計算されたプロパティと同じように動作させています。 Ember.Object.createに計算されたプロパティのようなバインディングを渡す

Parent = Ember.Object.extend({ 
    color: 'red', 
    init: function() { 
    this.set('child', Child.create({ parent: this, color: Ember.computed.alias('parent.color') })); 
    } 
}); 
Child = Ember.Object.extend({}); 

parent = Parent.create(); 

// returns AliasedProperty {altKey: "parent.color", _dependentKeys: Array(1)}... 
// I want 'red' instead 
parent.get('child.color'); 

は、だから私は bindings are depreciated、 を知っているが、私はエンバーの1.10.1のための別の方法を見つけることができません:どのような何かをするだろう。また、 they are asynchronous、私はしたくないです。

私がこれをやっている理由は、Ember.Objectの間のデータダウンアクションアップパターンを持つことです。Childには、Parentで起きていることを知りたくありません。この力で、異なるバインディングでChildという2つのインスタンスを作成できます。

したがって、作成時にバインディング/計算されたプロパティを定義します。つまり、ParentのプロパティをChildに渡しますが、createにバインドされます。

誰でもアイデアがありますか?

+0

umあなたのコードの問題は何ですか?あなたが使用する前に 'Child'を定義するようなタイプミスを除けば、おそらく' Ember.compute'ではなく 'Ember.computed.alias'を意味します。また、クラスにエイリアスを定義する必要がありますが、以前のemberバージョンでは、作成中にも可能ですが、 '1.10'についてはわかりませんので、有効です。また、Emberの「1.10」が古代であることを実感していただきたいと思います! – Lux

+0

が問題をアップデートしました。タイプミスで申し訳ありません。質問が更新されました。それは 'エイリアス'は作成時に有効ではありません.....新しいバージョンのためのアイデアはありません。作成上の解決策が大好きです。 – s12chung

+0

「コンポーネントが一方向バインディングをどのようにしているか」とはどういう意味ですか? – locks

答えて

0

だけ.extendcolor: Ember.computed.alias('parent.color')を渡す:

this.set('child', Child.create({ parent: this })); 

をそして期待どおりに動作します:

Child = Ember.Object.extend({ 
    color: Ember.computed.alias('parent.color') 
}); 

以降のみ.createを呼び出すときに、親を設定します。

+0

これは、親が子供について知っていることを意味するので、私が望むものではありません。私はコンポーネントがどのように '{{子コンポーネントの色=色}}'のように何かを探しています(親は親について何も知らない) – s12chung

関連する問題