Я пытаюсь написать представление Backbone для браузера объектов, которое предназначено для реализации в нескольких местах с различными типами объектов и немного отличающимися операциями.Как мне добиться хорошего повторного использования кода.
Я попытался просто расширить базовое представление в моем браузере, а затем расширить браузер в моей реализации, однако это оставляет меня с некоторыми общими свойствами.Это нежелательный эффект, поскольку данные добавляются во все реализации при каждом создании браузера.
Может ли кто-то пролить свет на способ решения этой проблемы или, возможно, альтернативное решение?
Вот некоторыепримеры кода, чтобы дать вам лучшее представление о том, как он в настоящее время стоит:
var BrowserView = Backbone.View;
_.extend(BrowserView.prototype, Backbone.View.prototype, {
className: 'browser',
collections: [],
events: {
},
_events:{
},
initialize: function () {
this._initialize();
},
render: function () {
this._render();
},
_initialize: function () {
this.container = $( this.make('div', {class: 'container'} ) );
this.$el.append(this.container);
if ( this.options.collections ) {
this.collections = [];
_.each(this.options.collections, this.add, this);
}
_.extend(this.events, this._events);
this.delegateEvents();
},
_render: function () {
this.container.empty();
_.each(this.collections, function (view) {
this.container.append(view.el);
view.render();
}, this);
}
});
BrowserView.extend = Backbone.View.extend;
var ContactBrowserView = BrowserView.extend({
});
Как всегда, я более чем приветствую обратную связь в отношении любого аспекта предоставленного мною фрагмента кода.
СпасибоВы, Алекс
РЕДАКТИРОВАТЬ Моя проблема заключается в том, что подклассы разделяют свойство коллекций.Вот пример моего собственного решения, которое инициализирует свойство collection через унаследованный метод.jsfiddle.net/JhZXh/3