Dostaję błąd:nie może przedłużyć backbone.events w coffeescript
Uncaught TypeError: Cannot read property 'constructor' of undefined
Podczas deklarowania następujące klasy:
class ViewHelpers extends Backbone.Events
mogę używać tej samej składni rozszerzenie Backbone.Router , widoki modelu itd. Oto skompilowany javascript którym pisałem w szybki dziennika, aby upewnić się Backbone.Events było
__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);
Więc linia przyczyną błędu jest
ViewHelpers.__super__.constructor.apply(this, arguments);
Jaka jest różnica __extends() metody, która będzie pracować dla Backbone.View a nie Backbone.Events?
mam skomentował różnicę między Backbone.Events i inne obiekty szkieletu w odpowiedzi poniżej, ale chciałbym jako k: jaki jest cel ViewHelpers? Ponieważ jego nazwa nie jest typową nazwą klas (tj. Rzeczowników w liczbie pojedynczej), więc może się zdarzyć, że klasa nie jest tym, czego potrzebujesz. – epidemian
Świetna odpowiedź poniżej dzięki! Zgadzam się, że pomocnicy są ogólnie definiowani w skali globalnej. W tym przypadku utrzymuję bibliotekę funkcji w klasie ViewHelpers, utworzoną jako własność mojej głównej klasy kontrolera. Istnieje kilka funkcji (na przykład obsługa przejściów CSS transitionEnd), które mogą chcieć subskrybować wiele detektorów zamiast przekazywania pojedynczego wywołania zwrotnego. Ponieważ używam już kręgosłupa, pomyślałem, że podklasuję w tym celu "klasę" zdarzenia (obiekt). Przykro mi, że spóźniłem się na tę odpowiedź, nie wiem, dlaczego nie dostałem powiadomienia kilka miesięcy temu. – benipsen