Javascript 带有余烬的Typeahead.js';s HTMLBars
我们一直在使用我们的Ember应用程序(via)中的Typeahead.js库,并在1.10之前的Ember版本上取得了成功,但升级到Ember 1.10给我们带来了问题 到目前为止,我们已经成功编译了传递到typeahead组件的模板,并将其传递到typeahead库,如下所示:Javascript 带有余烬的Typeahead.js';s HTMLBars,javascript,ember.js,typeahead.js,htmlbars,Javascript,Ember.js,Typeahead.js,Htmlbars,我们一直在使用我们的Ember应用程序(via)中的Typeahead.js库,并在1.10之前的Ember版本上取得了成功,但升级到Ember 1.10给我们带来了问题 到目前为止,我们已经成功编译了传递到typeahead组件的模板,并将其传递到typeahead库,如下所示: templates: { // this.get('suggestionTemplate') is a string of handlebars template suggestion: Handlebars
templates: {
// this.get('suggestionTemplate') is a string of handlebars template
suggestion: Handlebars.compile(this.get('suggestionTemplate')),
<other code>
}
错误:
uncaughttypeerror:that.templates.suggestion不是函数
以前,that.templates.suggestion
,它是上面第一个代码块的值,是一个可以传递给对象suggestion
的函数,它将编译实际的模板。对于HTMLBars,that.templates.suggestion
不再是一个函数,而是一个HTMLBars对象,因此此代码不再有效
在Ember 1.10中,是否有更好的方法来完成与之前行为相匹配的相同操作?如果不再维护此类加载项,我建议您直接使用typeahead(无cli加载项),我从Ember 1.7开始就这样使用它,现在我在1.11上我记得我在使用
把手时遇到了类似的问题。编译
我最终选择将函数传递给建议
,然后模板内容:
templates: {
empty: '<span>No results</span>',
suggestion: function(item){
return '<div>' + item.name + '</div>';
}
}
模板:{
空:“无结果”,
建议:职能(项目){
返回“”+item.name+“”;
}
}
希望这对您也有用。最后,我们在
bower.json中保留了一个单独的Handlebar依赖项,因为typeahead库似乎要求您将普通Handlebar模板传递给它我们实际上也没有使用该插件,因为我们没有使用ember cli,但我们确实从中提取了代码。它是一个相当轻的包装器,尽管实际上并不太依赖于插件本身。如何将自定义模板传递给typeahead.js?这不是一个理想的解决方案,因为它将所有建议模板绑定到同一个html
templates: {
empty: '<span>No results</span>',
suggestion: function(item){
return '<div>' + item.name + '</div>';
}
}