Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ember.js/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 带有余烬的Typeahead.js';s HTMLBars_Javascript_Ember.js_Typeahead.js_Htmlbars - Fatal编程技术网

Javascript 带有余烬的Typeahead.js';s HTMLBars

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

我们一直在使用我们的Ember应用程序(via)中的Typeahead.js库,并在1.10之前的Ember版本上取得了成功,但升级到Ember 1.10给我们带来了问题

到目前为止,我们已经成功编译了传递到typeahead组件的模板,并将其传递到typeahead库,如下所示:

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>';
  }
}