1

我在input下面有一个搜索字段和一个 twitter 引导下拉菜单。

当用户在input字段中键入内容(带有 value 的 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