Ich bin völlig auf Meteor graben, aber ich stehe fest, versuchen, die globale-heit der Beispiele zu reduzieren und fügen Sie eine Prise OOP.Wrapping meteor.js Lenker Vorlagen in CoffeeSkript Klassen
Derzeit mein Code sieht wie folgt aus:
# 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
Aber, a la Wirbelsäule oder Rückgrat, was ich wirklich haben möchte ist so etwas wie dieses:
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
Was ist das Recht Weg, um eine Lenkerschablone in Meteor zu wickeln?
Ich habe es geschafft, Meteor.Collection zu umbrechen, aber weil Lenker das Objekt nach der Vorlage benennt, bin ich nicht sicher, der richtige Weg, um es für das Template zu tun.
AKTUALISIERT
@ Greg wies darauf hin, dass Sie verwenden _.extend können die Eigenschaften hinzuzufügen. Das funktioniert, aber was ist, wenn ich die Event-Handler-Methoden 'query_submitted' und 'clear_query_field' in die Klasse falten will? Etwas wie dieses:
_.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()
funktioniert nicht ganz. Die Event-Handler nicht ordnungsgemäß aufgerufen werden und ich bekomme Fehler in der Konsole wie:
Uncaught TypeError: Object [object Window] has no method 'query_submitted'
, ähnlich
events :
'submit #search_form' : (e) -> @query_submitted(e)
Gibt:
Uncaught TypeError: Cannot call method 'call' of undefined
Also, was fehlt?
Danke, @greg! Ich habe die _.extend-Lösung gefunden, aber ich habe immer noch Probleme, die Event-Handler-Funktionen einzuschließen. Ich habe die Frage aktualisiert, würdest du einen Blick darauf werfen? –