0

とプロパティを持つコントローラーApplicationControllerがあります。controllerIntcontrollerString

そして、プロパティを持つコンポーネントRedSquareComponentcomponentIntありcomponentStringます。

とをhbs-template 経由でバインドcontrollerIntします。controllerStringcomponentIntcomponentStringcomponentString=controllerString="VALUE FROM CONTROLLER"

値をに設定するメソッドRedSquareComponentもあります。.on('init')"SET ON INIT"componentString

コンポーネントにアクションを追加して、オブジェクト (赤い四角) のクリックを処理し、値 (1 など) を に設定しましたcomponentInt

しかし、このアクションが機能すると --componentStringも変化し (理由はわかりません)、 と等しくなり"VALUE FROM CONTROLLER"ます。

それは本当に期待される動作ですか?

同じコードは Ember 12.4 でも問題なく動作しますが、いくつかの 13.* バージョンで確認しましたが、動作しません。

https://jsfiddle.net/AlexeyBedonik/a23ev98w/3/

4

1 に答える 1

0

あなたの場合、.on('init')一部を変更するだけ.on('didInsertElement')で問題が解決します(つまり、コントローラーとコンポーネントの両方componentStringのプロパティが「SET ON INIT」に更新されます)。
ただし、既にレンダリングされている親の値を変更しないでください。 . したがって、非推奨の警告が表示されます。

この問題/バグの詳細については、このディスカッションに従ってください。

以下の概念に従う/理解することは良いことです。

1) デフォルトでプロパティをコンポーネントに渡します。これは双方向のデータ バインディング
です 。2) データを更新するには、常に Data Down Actions Up の原則 ( DDAU )に従います。

于 2016-08-06T15:41:11.277 に答える