Я делаю выбор цепочки с помощью backbone.js в этой статье http://blog.shinetech.com/2011/07/25/cascading-select-boxes-with-backbone-js/, но при распространении классов возникают ошибки.
Итак, у меня есть класс LocationsView:
class Blog.Views.LocationsView extends Backbone.View
events:
"change": "changeSelected"
Класс CountryView:
class Blog.Views.CountriesView extends Blog.Views.LocationsView
setSelectedId: (countryId) ->
Класс CitiesView:
class Blog.Views.CitiesView extends Blog.Views.LocationsView
setSelectedId: (cityId) ->
Но когда код coffeescript скомпилирован в javascript, мои двойные расширенные классы выглядят так:
(function() {
var __hasProp = Object.prototype.hasOwnProperty, __extends = function(child, parent) {
for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; }
function ctor() { this.constructor = child; }
ctor.prototype = parent.prototype;
cities_view.js:5 Uncaught TypeError: Cannot read property 'prototype' of undefined
child.prototype = new ctor;
child.__super__ = parent.prototype;
return child;
};
Blog.Views.CitiesView = (function() {
__extends(CitiesView, Blog.Views.LocationsView);
function CitiesView() {
CitiesView.__super__.constructor.apply(this, arguments);
}
CitiesView.prototype.setSelectedId = function(cityId) {};
return CitiesView;
})();
}).call(this);
И я получил ошибку:
Uncaught TypeError: Cannot read property 'prototype' of undefined cities_view.js:5
Итак, где проблема и как ее исправить?