敬礼
私は、実際に手動で値を選択するのではなく、内部で値を編集することなく、Ember.Selectボックスを編集する方法を見つけようとしています。私のEmber.Selectは次のようになります。
{{view Ember.Select
contentBinding="Et.router.availablePhasesController"
optionValuePath="content.id"
optionLabelPath="content.label"
selectionBinding="a.selectedPhase"
}}
availablePhasesControllerは次のようになります。
Et.AvailablePhasesController = Ember.ArrayController.extend({
content: [
{ id: 1, label: "1" },
{ id: 2, label: "2" },
{ id: 3, label: "3" }
]
});
選択ボックスからこれらの値を選択すると、これはすべてうまく機能しますが、私の質問は、Ember.Selectによって作成されたselect要素の値を変更すると、バインディングがトリガーされます。つまり、「a.selectedPhase」です。 select要素を変更するために使用される値も取得します。
.val()と.attr( "value")でjQueryを使用しようとしましたが、これはUIにのみ影響し、バインディングをトリガーしませんでした。つまり、選択ボックスには値があり、「a.selectedPhase」はありませんでした。
また、Ember.Selectビューを拡張してみたところ、現在の値を格納し、バインディングに従って更新する変数「value」があることがわかりましたが、これの使用法は見つかりませんでした。この値が変更されたときに監視するオブザーバーを作成しましたが、新しい値を手動で選択した場合にのみ変更されたため、役に立ちませんでした。
要約すると、バインディング内の変数を直接変更する以外の方法で、またはUIを介してselectionBindingをトリガーする方法はありますか?
編集:誰かがコメントで要求したように私はjsfiddleを作成しました:http://jsfiddle.net/y52Pc/2/
バインディングが正常に機能していることがわかります。選択ボックスで別のオプションを選択すると、正しく更新されます。また、2つのボタンを設定しました。1つはEmber.setメソッドを使用します。これも正常に機能し、バインディングをトリガーします。jQuery.val()を使用する他のメソッドは、UIにのみ影響し、バインディングをトリガーしません。
私が探しているのは、他の何かでバインディングをトリガーする他の方法です。次に、.setを使用するか、選択ボックスを選択して手動でバインドします。
編集2:jQueryを介してバインディングをトリガーする更新された方法をここに追加しました:http://jsfiddle.net/y52Pc/3/ これで問題が解決したようです!