我正在尝试使用elasticsearch后端实现Typeahead。搜索本身似乎有效,现在我正在尝试调整光学元件。我想使用我写的Ember.Handlebars助手。我的第一次尝试是使用handelbars作为模板引擎:
App.SearchComponent = Ember.TextField.extend({
didInsertElement: function() {
App.UserSearchEngine.initialize();
this.initializeTypeahead();
},
initializeTypeahead: function(){
var _this = this;
this.typeahead = this.$().typeahead({
hint: true,
highlight: true,
minLength: 3
},
{
name: _this.$().attr('id') || "typeahead",
// template: 'My: {{firstName}}',
limit: this.get("limit") || 5,
source: App.UserSearchEngine.ttAdapter(),
templates:{
suggestion: Ember.Handlebars.compile('{{firstName}} {{lastName}}')
}
}
);
}
});
这给了我一个错误:
未捕获的TypeError:无法读取未定义的属性“容器” 由Ember在行中的“_triageMustache”助手中引起的
var helper = Ember.Handlebars.resolveHelper(options.data.view.container, property);
这可能是因为我尝试直接编译模板。
如果我使用Handlebars.compile()而不是Ember.Handlebars.compile(),它会工作。上下文似乎不正确。
答案 0 :(得分:2)
你实际上应该在这里使用常规Handlebars.compile
。 Typeahead库对Ember绑定模板一无所知,因此它不知道如何调用它们。
或者,您的模板非常简单,它可以只是一个文字函数,以节省您在生产中运送Handlebars编译器的麻烦或特别预编译这个:
templates: {
suggestion: function(context){ return context.firstName + ' ' + context.lastName; }
}