jestem całkowicie kopanie na meteor, ale utknąłem próbując zmniejszyć globalną-ności przykładów i dodać odrobinę OOP.owijania meteor.js Kierownice szablony w coffeescript klas
Obecnie mój kod wygląda następująco:
# 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
Ale a la kręgosłup lub szkielet, co naprawdę chciałbym mieć to coś takiego:
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
Co znajduje się w prawo sposób na zawijanie szablonu kierownicy w meteorze?
udało mi się owinąć Meteor.Collection, ale dlatego, kierownice nazwy obiektu po szablonie, nie jestem pewien sposób prawo to zrobić na szablonie.
AKTUALIZACJA
@greg wskazał, że można użyć _.extend aby dodać właściwości. To działa, ale co jeśli chciałbym spasować metody obsługi zdarzeń "query_submitted" i "clear_query_field" w klasie? Coś takiego:
_.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()
nie do końca pracy. Do obsługi zdarzeń nie są nazywane prawidłowo i pojawiają się błędy w konsoli jak:
Uncaught TypeError: Object [object Window] has no method 'query_submitted'
Podobnie
events :
'submit #search_form' : (e) -> @query_submitted(e)
Daje:
Uncaught TypeError: Cannot call method 'call' of undefined
Więc czego brakuje?
Dzięki, @greg! Znalazłem rozwiązanie _.extend, ale wciąż mam problemy z rozszerzeniem o funkcje obsługi zdarzeń. Zaktualizowałem pytanie, czy mógłbyś rzucić okiem? –