1

我们一直在我们的 Ember 应用程序中使用 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>
}

但是,这在 Ember 1.10 中不起作用,因为 typeahead.js 在执行这行代码时会引发以下错误:

代码:

$el = $(html.suggestion).append(that.templates.suggestion(suggestion)).data(datasetKey, that.name).data(valueKey, that.displayFn(suggestion)).data(datumKey, suggestion);

错误:

Uncaught TypeError: that.templates.suggestion is not a function

以前that.templates.suggestion,这是上面第一个代码块中的值,是一个可以传递对象suggestion并编译实际模板的函数。使用 HTMLBars,that.templates.suggestion不再是一个函数,而是一个 HTMLBars 对象,所以这段代码不再有效。

在 Ember 1.10 中是否有更好的方法来做同样的事情来匹配之前的行为?

4

3 回答 3

1

我记得我有一个类似的问题,Handlebars.compile我最终选择传递一个函数suggestion,然后是模板内容:

templates: {
  empty: '<span>No results</span>',
  suggestion: function(item){
   return '<div>' + item.name + '</div>';
  }
}

希望这对你也有效。

于 2015-05-11T21:30:51.183 回答
0

如果不再维护此类插件,我建议您直接使用 typeahead(无 cli 插件),自 Ember 1.7 以来我一直在使用它,现在我在 1.11

于 2015-05-11T21:17:12.180 回答
0

最后,我们只是在我们的中保留了一个单独的车把依赖项,bower.json因为看起来 typeahead 库要求您将香草车把模板传递给它

于 2015-05-13T15:21:45.663 回答