私はこの問題をいくつかの場所で抱えていますが、最近ではHighchartsの問題です。私は3つのdivを持つレイアウトを持っており、それらを#leftdiv、#maindiv、および#rightdivと呼びます。#maindivにハイチャートチャートがあります。ボタンをクリックすると、leftdivとrightdivを非表示にできます。
現在、leftdivのボタンをクリックすると、showLeftというプロパティをfalseに設定するアクションハンドラーが呼び出されます。divのクラスは、次のように、showLeftに基づいてコンピュータープロパティにバインドされます。
leftClass: function() {
if (this.get('showLeft')) {
return "span3"
} else {
return "span0"
}
}.property('showLeft')
と
mainClass: function() {
if (this.get('showLeft') && this.get('showRight')) {
return "span6"
} else if (this.get('showLeft') || this.get('showRight')) {
return "span9"
} else {
return "span11"
}
}.property('showLeft', 'showRight'),
これは、左側のバーを非表示にするために機能します。ただし、maindivのサイズが変更されたら、新しいdivに合わせてhighchartsチャートを再描画する必要があります。
ただし、再描画チャート関数がshowLeftを監視すると、オブザーバーが起動した後にプロパティが更新されてDOMを介して伝播する可能性があるため、予期しない動作をします。
この問題を回避するための一般的な構成はEmberにありますか?これは、明示的にランループを構築することが求められている状況であり、それを行うための標準的な方法はありますか?
ありがとう、
-マット