Sto scavando completamente sulla meteora, ma sono bloccato cercando di ridurre la globalizzazione degli esempi e aggiungere un pizzico di OOP.Disposizione dei modelli di manubri meteor.js nelle classi di coffeescript
Attualmente, il mio codice è simile al seguente:
# View for Search Form
form = Template.SearchForm
form.events =
'submit #search_form' : query_submitted
'click #load_more' : -> Songs.get_next_page()
'focus #query' : clear_query_field
form.page = -> Songs.page
form.total_pages = -> Songs.total_pages
Ma, alla colonna vertebrale o spina dorsale, quello che mi piacerebbe davvero avere è qualcosa di simile:
class SearchForm extends Template.SearchForm
events:
'submit #search_form' : query_submitted
'click #load_more' : -> Songs.get_next_page()
'focus #query' : clear_query_field
page : -> Songs.page
total_pages : -> Songs.page
# etc etc
form = new SearchForm
Qual è il diritto modo di avvolgere un modello di manubri in meteora?
Sono riuscito a racchiudere Meteor.Collection, ma poiché i manubri chiamano l'oggetto dopo il modello, non sono sicuro del modo corretto di farlo per il modello.
AGGIORNATO
@ Greg ha sottolineato che è possibile utilizzare _.extend per aggiungere le proprietà. Funziona, ma cosa succede se voglio piegare i metodi del gestore di eventi 'query_submitted' e 'clear_query_field' nella classe? Qualcosa del genere:
_.extend Template.SearchForm,
events :
'submit #search_form' : @query_submitted
'click #load_more' : -> Songs.get_next_page()
'focus #query' : @clear_query_field
page : -> Songs.page
total_pages : -> Songs.total_pages
clear_query_field : (event) ->
console.log 'focus'
query_submitted : (event) ->
event.preventDefault()
Songs.clear()
Songs.query = $('#query')[0].value
Songs.search()
Non funziona. I gestori di eventi non vengono chiamati correttamente e ottengo errori nella console come:
Uncaught TypeError: Object [object Window] has no method 'query_submitted'
Allo stesso modo,
events :
'submit #search_form' : (e) -> @query_submitted(e)
Dà:
Uncaught TypeError: Cannot call method 'call' of undefined
Allora cosa manca?
Grazie, @greg! Ho trovato la soluzione _.extend, ma sto ancora avendo problemi ad estendere per includere le funzioni del gestore di eventi. Ho aggiornato la domanda, vorresti dare un'occhiata? –