使用自动完成功能创建TextField

for*_*rtm 9 ember.js

我必须在Ember中创建一个带有自动完成功能TextField,以便在每次按键时根据匹配从数据库中获取数据.

他们在Ember中的任何内置小部件都是这样吗?

Wal*_*ile 8

您可以使用Ember.Textfield事件来执行此操作.(Coffeescript和Jade)

搜索视图

App.SearchView = Ember.View.extend

    templateName: 'search'

    searchTerm: null

    searchTextField: Ember.TextField.extend

      insertNewline: ->
        # if the user hits the enter key, you can do something different or call the same function
        @get('controller').search(@get('searchTerm'))

      keyUp: (e) ->
        # validate the item on every keypress
        if (e.currentTarget.value.length > 0)
          @get('controller').search(@get('searchTerm'))
Run Code Online (Sandbox Code Playgroud)

搜索模板

script(type='text/x-handlebars', data-template-name='search')

{{view view.searchTextField valueBinding="view.searchTerm" placeholder="search"}}

<button {{action "search"}}>search</button>
Run Code Online (Sandbox Code Playgroud)

搜索控制器

App.SearchController = Ember.ObjectController.extend

  search: (searchTerm) ->
    # do your search
Run Code Online (Sandbox Code Playgroud)

**添加了缺失的括号

  • @ootoovak在调用`Ember.run.debounce`或Lodash的`_.debounce`时包裹`keyUp`的主体. (3认同)

小智 2

Ember.js 中没有内置组件,但根据经验,您自己编写此类组件非常容易。在 EmberCamp Trek Glowacki 上,他希望不再需要任何小部件库。

您还可以使用 Twitter Bootstrap 中的 Typeahead 或 jQuery UI 中的 AutoComplete,它们可以一起工作。

  • [Bootstrap Typeahead](http://stackoverflow.com/questions/13637966/emberjs-data-source-twitter-bootstrap-typeahead) (2认同)