1.1.4 • Published 7 years ago

backbone.typeahead v1.1.4

Weekly downloads
160
License
MIT
Repository
github
Last release
7 years ago

Build Status

Backbone Typeahead

Integrates typeahead search into backbone collections.

View the online demo.

Examples

class Albums extends Backbone.TypeaheadCollection
  typeaheadAttributes: ['band', 'name', 'meta.members']
  tokenizeAttribute: (s) ->
    s = s.trim()
    return null if s.length is 0

    tokens = []

    for word in s.toLowerCase().split(/[\s\-_]+/)
      i = 0
      while i < word.length
        tokens.push(word.substr(i))
        i++

    tokens

albums = new Albums([
  { band: 'A Flock of Seagulls', name: 'A Flock of Seagulls', meta: { members: ['Mike Score'] }}
  { band: 'Rick Astley', name: 'Whenever You Need Somebody', meta: { members: ['Rick Astley'] }}
  { band: 'Queen', name: 'A Day at the Races', meta: { members: ['Freddie Mercury', 'Brian May'] }}
  { band: 'Queen', name: 'Tie Your Mother Down', meta: { members: ['Freddie Mercury', 'Brian May'] }}
])

console.log album.get('name') for album in albums.typeahead('you')
# Outputs:
#  Whenever You Need Somebody
#  Tie Your Mother Down

console.log album.get('name') for album in albums.typeahead('ra', band: 'Queen')
# Outputs:
#  A Day at the Races

console.log album.get('name') for album in albums.typeahead('fred')
# Outputs:
#  A Day at the Races
#  Tie Your Mother Down

# Custom tokenizer
console.log album.get('name') for album in albums.typeahead('ces')
# Outputs:
#  A Day at the Races

Inspired by Twitter's typeahead.js.