Skip to content

Instantly share code, notes, and snippets.

@Aetet
Created March 4, 2014 11:33
Show Gist options
  • Save Aetet/9344864 to your computer and use it in GitHub Desktop.
Save Aetet/9344864 to your computer and use it in GitHub Desktop.
Controller example
q = require('q')
Suggestions = require('./models/suggest_server_model.coffee')
SuggestView = require('./views/suggest_view.coffee')
SuggestSelectView = require('./views/suggest_select_view.coffee')
class Suggest extends app.BasicObject
constructor: (options) ->
self = this
suggestView = new SuggestView()
# suggestView.on('render', () ->
# )
suggestView.bind(options.el)
suggestView.on('user:enter', (text) =>
suggestView.off('arrow:pressed')
suggestView.off('blur:suggest')
suggestSelectView = new SuggestSelectView()
#TODO Разобраться, почему Саджесты биндятся на ложный элемент
suggestSelectView.bind(suggestView.$('.jsSuggestSelect'))
suggestions = new Suggestions()
q(suggestions.gather(text))
.done((suggestions) =>
#На случай если у нас ничего нет
if (suggestions.length)
suggestSelectView.collection = suggestions
@blurSuggest(suggestView, suggestSelectView)
.then(() ->
).fail(()->
suggestSelectView.$el.html('')
suggestSelectView.remove()
)
suggestSelectView.on('user:choose:city', (city) ->
console.log('user:Choose:city', city)
#TODO Метод или событие?
suggestView.addChosenCity(city)
)
suggestSelectView.render()
suggestView.on('arrow:pressed', (keyCode) ->
suggestSelectView.handleArrowPress(keyCode)
)
else
suggestSelectView.$el.html('')
suggestSelectView.remove()
)
)
suggestView.render()
suggestSelectRendered: (suggestSelectView) ->
dfd = q.defer()
suggestSelectView.on('render', () ->
dfd.resolve()
)
suggestSelectView.render()
dfd.promise
blurSuggest: (suggestView, suggestSelectView) ->
dfd = q.defer()
suggestView.on('blur:suggest', () ->
suggestSelectView.on('user:choose:city', () ->
dfd.resolve()
)
setTimeout(()->
dfd.reject()
, 200)
)
dfd.promise
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment