私は Ember で物事を行うのに苦労しています。それは、物事を行うための「Ember のやり方」をまだ完全に把握していないためだと確信しています。そこにある標準的なチュートリアルの範囲。
Web アプリのすべてのページに表示される、ある種の提案付きテキスト フィールド コンポーネントを開発しています。ここでは、その方法の詳細をすべて尋ねることはしませんが、最初から達成するのに苦労しているいくつかの特定のことだけを尋ねます. 以下は、私がこれまでに持っているものの関連するコードの断片です。
// 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 パネルを入力フィールドのフォーカス状態に反応させるにはどうすればよいでしょうか?
一般的に、これが私の質問の核心です。このコンポーネントを開発するためにすべてのものをどのように接続すればよいでしょうか? 答えがコントローラーにアタッチすることである場合、このコンポーネントのコントローラーをセットアップするにはどうすればよいですか?また、それがすべてのコンテキストとして機能するように、それがコントローラーであることを指定するにはどうすればよいでしょうか?