アプリ用に再利用可能な先行入力コンポーネント (?) を作成しようとしています。Twitter の typeahead JavaScript ライブラリを使用しており、それからカスタム コンポーネント/ビューを作成しようとしています。
テンプレートで typeahead を次のように定義できるようにしたいと思います。
{{view App.TypeAhead name=ta_name1 prefretch=prefetch1 template=template1 valueHolder=ta_value1}}
これらの変数はコントローラーに配置されると考えていました。
App.ApplicationController = Ember.Controller.extend({
ta_name1: 'movies',
prefetch1: '../js/stubs/post_1960.json',
template1: '<p><strong>{{value}}</strong> - {{year}}</p>',
ta_value1: null
});
これを達成するために何を使用する必要があるか、コンポーネントまたはビューがわかりません。私はそれがこのようなものになると想像します。
App.Typeahead = Ember.View.extend({
templateName: 'typeahead',
didInsertElement: function() {
$('.typeahead').typeahead([{
name: this.getName(),
prefetch: this.getPrefetch(),
template: this.getTemplate(),
engine: Hogan,
limit: 10
}]);
$('.typeahead').on('typeahead:selected', function(datum) {
this.set('controllers.current.' + this.getValueHolder()), datum);
});
}
});
みたいなテンプレートで
<script type="text/x-handlebars" data-template-name='typeahead'>
<input class="typeahead" type="text">
</script>
jQuery クラス セレクターから逃れる方法がわかりません。実際には、フォームに複数のタイプアヘッドがあるため、このクラスの選択ではうまくいきません。
ビューのコントローラーから値を取得する方法もわかりません。明らかに、、、getPrefetch()
などgetTemplate()
のgetValueHolder()
メソッドは存在しません。
これが疑似コードのトンであることはわかっていますが、正しい方向に向けられることを願っています。