1

下にinput検索フィールドと Twitter ブートストラップ ドロップダウンがあります。

ユーザーがinputフィールドに何かを入力すると (値を持つ EmberinputヘルパーcustomerSearchQuery)、コントローラーには計算されたプロパティがあり、ドロップダウンに入力する代替の配列を返します。ビューには、ドロップダウンを処理するメソッドもあります。これは、フィールドがフォーカスactiveされたときにキーボードでドロップダウンをナビゲートするために後で使用される配列の最初の要素にクラスを設定します。inputビュー階層は次のようになります。これらはすべて同じコントローラーを使用します。

Care.NavbarView = Ember.View.extend({
    controller: Care.NavbarController.create(),
    templateName: 'navbar',
    CustomerSearchView: Ember.View.extend({
        selectedSearchMatch: 'ean',
        searchStateLoading: false,
        searchStateSuccess: false,
        searchStateFail: false,
        SearchMatchesView: Ember.View.extend({
            tagName: 'li',
            classNameBindings: ['isActive:active'],
            setSelectedSearchMatchToFirst: function() {
                console.log(this.get('controller').get('customerSearchQuery'))
            }.observes('controller.customerSearchQuery'),
            isActive: function() {
                return this.get('content.value') === this.get('parentView.selectedSearchMatch')
            }.property('content', 'parentView.selectedSearchMatch')
        })
    })
})

問題は、オブザーバー ( setSelectedSearchMatchToFirst) が常に起動するとは限らず、計算されたプロパティ (this.get('customerSearchQuery')その値に基づいて結果を使用して返す) が起動した場合にのみ起動することです。customerSearchQueryそれはなぜですか? また、入力フィールドが変更されるたびに起動するにはどうすればよいですか?

4

0 に答える 0