我在 Ember 上做事时遇到了麻烦,我敢肯定这是因为我还没有完全掌握做事的“Ember 方式”,而且我正在尝试做一些脱离标准教程的范围。
我正在开发某种带有建议的文本字段组件,它将出现在我的网络应用程序的每个页面中。我不会在这里询问有关如何做到这一点的所有细节,而只是问一些我从一开始就无法完成的具体事情。以下是我目前所拥有的相关代码片段。
// handlebars template: searchbar.hbs
{{view App.SearchField viewName="searchField"}}
<div class="results" {{bindAttr class="searchField.hasFocus"}}>
This is where the results for whatever the user has typed are shown.
</div>
// coffeescript source of the views: searchbar.coffee
App.SearchBar: Ember.View.extend
templateName: 'searchbar'
App.SearchField: Ember.TextField.extend
placeholder: 'Search'
hasFocus: false
eventManager: Ember.Object.create
focusIn: (event, view) ->
@set('hasFocus', true)
focusOut: (event, view) ->
@set('hasFocus', false)
// somewhere in the layout of the pages in my app
<div id="header">
{{App.SearchBar}}
</div>
这可能还需要一个控制器,但我还没有开发它,因为我还不知道它在这个设置中的位置。
首先,我希望在搜索字段获得焦点后立即出现建议弹出面板。这就是我在上面尝试在搜索字段上实现 hasFocus 属性的原因。但是如何让我的 div.results 面板对输入字段的焦点状态做出反应?
一般来说,这是我的问题的核心,我如何连接所有东西来开发这个组件?如果答案是将其附加到控制器上,那么如何为该组件设置一个控制器,以及如何指定它是它的控制器,以便它充当所有内容的上下文?