我正在尝试为我的应用程序创建一个可重用的预输入组件(?)。我正在使用twitter 的 typeahead javascript 库并尝试从中创建自定义组件/视图。
我希望能够在我的模板中定义预先输入,如下所示:
{{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()
, 等方法不存在。
我知道这是一堆伪代码,但希望我能指出正确的方向。