我有一个input
搜索字段和一个Twitter bootstrap下拉列表。
当用户在input
字段(Ember input
帮助器中输入值为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
输入字段时如何触发?