sto ottenendo l'errore:non può estendere backbone.events in CoffeeScript
Uncaught TypeError: Cannot read property 'constructor' of undefined
Quando si dichiara la seguente classe:
class ViewHelpers extends Backbone.Events
posso utilizzare la stessa sintassi di estendere Backbone.Router , Vista, modello ecc Ecco la javascript compilato, che ho scritto in un registro rapido per assicurarsi che Backbone.Events c'era
__t('views').ViewHelpers = (function(_super) {
#how i know it is definied here
console.log(_super.trigger)
__extends(ViewHelpers, _super);
function ViewHelpers() {
return ViewHelpers.__super__.constructor.apply(this, arguments);
}
return ViewHelpers;
})(Backbone.Events);
Così la linea che causa l'errore è
ViewHelpers.__super__.constructor.apply(this, arguments);
Qual è la differenza __extends() metodo che avrebbe funzionato per Backbone.View e non Backbone.Events?
ho commentato la differenza tra Backbone.Events e altri oggetti Backbone in una risposta di seguito, ma, mi piacerebbe come k: qual è lo scopo di ViewHelpers? Perché il suo nome non è il nome tipico per le classi (cioè nomi singolari), quindi potrebbe essere il caso che una classe non sia ciò di cui hai bisogno. – epidemian
Ottima risposta qui sotto grazie! Sono d'accordo che gli aiutanti siano generalmente definiti in un ambito globale. In questo caso gestisco una libreria di funzioni in una classe ViewHelpers, istanziata come una proprietà della mia classe di controller principale. Ci sono alcune funzioni (ad esempio, i gestori di transizione CSSEnd) che potrei voler sottoscrivere più listener invece di passare un singolo callback. Dal momento che sto già usando Backbone ho pensato di creare una sottoclasse dell'Evento "class" (oggetto) per quello scopo. Mi dispiace di essere in ritardo su questa risposta, non sono sicuro del motivo per cui non sono stato avvisato mesi fa. – benipsen