2017-08-15 24 views
0
<select name="state"> 
    {{#each states as |state|}} 
     <option value={{state.id}} disabled={{is-selected state.id matchedFilters}}>{{state.name}}</option> 
    {{/each}} 
</select> 

ユーザがオプションを選択すると、そのオプションがmatchedFilters配列に追加されます。今私は選択されたオプションを無効にしたい。だから私はそれのための助けを書いた。ハンドルバーヘルパーが入力変更時に実行されない

export function isSelected(params) { 
    let selected = params[0]; 
    let options = params[1]; 
    return options.indexOf(selected) >= 0;; 
} 

しかし、このヘルパーは読み込み時にのみ実行されます。 matchedFiltersが変更されるたびにそのヘルパーが実行されるようにします。

答えて

0

ほとんどの場合matchedFiltersis-selectedヘルパーによって観測されていません。配列インスタンスを新しい配列に設定するのではなく、コンテンツの変更(状態IDのプッシュ)だけである可能性が高いからです。

私はis-selectedヘルパーの2つの作業バージョンを使用してひねりを作成しました。うまくいけばそれはあなたのためにそれをクリアします。

https://ember-twiddle.com/302ac612ba08293184a09c452ef0d8e0?openFiles=helpers.is-selected-smart.js%2C

+0

それは監視されていますが、言及するように結合が内容だけ、変更されていません。 – locks

+0

right - twiddleで前に言及したヘルパーの最初の実装は、明示的に配列を設定するときにバインディングが更新されていることを実際に実証しています。それをクリアしていただきありがとうございます! – xoma

関連する問題