首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有Ember's HTMLBars的Typeahead.js

带有Ember's HTMLBars的Typeahead.js
EN

Stack Overflow用户
提问于 2015-05-12 04:44:53
回答 3查看 273关注 0票数 1

我们已经在我们的Ember应用程序中使用了Typeahead.js库(通过this addon),在Ember1.10之前的版本上取得了成功,但升级到Ember1.10给我们带来了问题。

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

代码语言:javascript
复制
templates: {
  // this.get('suggestionTemplate') is a string of handlebars template
  suggestion: Handlebars.compile(this.get('suggestionTemplate')),
  <other code>
}

然而,这在Ember1.10中不起作用,因为typeahead.js在执行此行代码时会抛出以下错误:

代码:

代码语言:javascript
复制
$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中,有没有更好的方法来做同样的事情,与之前的行为相匹配?

EN

回答 3

Stack Overflow用户

发布于 2015-05-12 05:30:51

我记得我在使用Handlebars.compile时也遇到过类似的问题,我最终选择将一个函数传递给suggestion,然后是模板内容:

代码语言:javascript
复制
templates: {
  empty: '<span>No results</span>',
  suggestion: function(item){
   return '<div>' + item.name + '</div>';
  }
}

希望这对你也有效。

票数 1
EN

Stack Overflow用户

发布于 2015-05-12 05:17:12

如果这样的附加组件不再被维护,我建议你直接使用typeahead (没有cli附加组件),我从Ember 1.7开始就是这样使用它的,现在我使用的是1.11

票数 0
EN

Stack Overflow用户

发布于 2015-05-13 23:21:46

最后,我们只是在bower.json中保留了一个单独的handlebars依赖项,因为typeahead库似乎需要您将普通的handlebars模板传递给它

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30177320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档