2013-04-21 37 views
9

Tôi phải tạo TextField với tự động hoàn tất trong Ember để tìm nạp dữ liệu từ Cơ sở dữ liệu trên mỗi lần nhấn phím dựa trên kết hợp.Tạo một TextField với tự động hoàn thành

Tiện ích con tích hợp trong Ember có dành cho điều này không?

+0

Đây là [embercast] (http://www.embercasts.com/episodes/building-an-autocomplete-widget-part-1) nếu có ai tìm kiếm giải pháp. – Sisir

Trả lời

2

Không có thành phần tích hợp trong Ember.js, nhưng từ trải nghiệm thành phần như vậy sẽ rất dễ dàng để tự viết. Trên EmberCamp Trek Glowacki cho biết ông hy vọng sẽ không có thư viện widget nào cần thiết.

Bạn cũng có thể sử dụng Typeahead từ Twitter Bootstrap hoặc AutoComplete từ jQuery UI có thể được thực hiện để làm việc cùng nhau.

+2

[Kiểu gõ Bootstrap] (http://stackoverflow.com/questions/13637966/emberjs-data-source-twitter-bootstrap-typeahead) – pjlammertyn

8

Bạn có thể sử dụng các sự kiện của Ember.Textfield để thực hiện việc này. (Coffeescript và Jade)

Kiện Tìm Kiếm Xem

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')) 

mẫu tìm kiếm

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

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

<button {{action "search"}}>search</button> 

Search khiển

App.SearchController = Ember.ObjectController.extend 

    search: (searchTerm) -> 
    # do your search 

** thêm ngoặc thiếu

+0

Có cách nào tốt để thêm độ trễ 300ms vào tìm kiếm không? Tôi đang lọc một danh sách DOM bán rộng và tôi không muốn Ember cố gắng lọc từng ký tự đã nhập. Nếu khách hàng đang cố gắng nhập tên. Tìm một sự chậm trễ tối thiểu giữa lọc có thể giúp điều này. – ootoovak

+1

Có, tôi có thể thêm mã vào mã ngay. Nhưng, về cơ bản, bạn sẽ thiết lập một bộ đếm thời gian trong javascript sẽ chạy chức năng tìm kiếm, và nếu một phím bấm khác xuất hiện, bạn có thể hủy bộ đếm thời gian đó, và sau đó thiết lập một bộ đếm thời gian khác. Bằng cách đó, gõ nhanh sẽ không gây ra một tìm kiếm mọi lúc, nhưng một break của x trong gõ sẽ. – WallMobile

+3

@ootoovak quấn phần thân của 'keyUp' trong một cuộc gọi đến' Ember.run.debounce' hoặc '_.debounce' của Lodash. – Bluu

3

EmberCasts có một video hay trên how to build an auto complete widget.

I asked them about the millisecond delay khi lọc và tôi được thông báo rằng họ sẽ đề cập đến điều đó trong tập tiếp theo mà họ thực hiện trên đó.

+0

EmberCasts quá xấu dường như không thêm video mới, video mà bạn đề cập đến rất nhanh và rất dễ thực hiện, cảm ơn. –

Các vấn đề liên quan