Так что я использую представления, которые являются боковыми панелями с вкладками в них, поэтому я создал родительский класс SidebarView, из которого я расширяю два новых класса. LeftSidebarView и RightSidebarView. здесь находится родительский класс:Расширение представлений в backbonejs с requirejs
define([
'jquery',
'underscore',
'backbone',
'eventbus'
], function ($, _, Backbone, eventBus) {
'use strict';
var SidebarView = Backbone.View.extend({
tabs: [],
isHidden: true,
alignment: '',
el : '',
templateId: '',
milliseconds: 300,
Обратите внимание на массив «tabs: []». Два класса, которые выходят из него только инициализировать функцию в них, что населяет закладку:
define([
'jquery',
'underscore',
'backbone',
'views/sidebar',
'eventbus',
'views/search'
], function ($, _, Backbone, SidebarView, eventBus, SearchView) {
'use strict';
var RightSidebarView = SidebarView.extend({
alignment: 'right',
el: "#rightSidebar",
templateId: '#sidebarTemplate',
initialize : function() {
this.tabs['search'] = new SearchView({model: this.model});
}
});
return RightSidebarView;
});
и другое одно:
/*global define*/
define([
'jquery',
'underscore',
'backbone',
'views/sidebar',
'views/listings',
'views/listingDetails',
'eventbus'
], function ($, _, Backbone, SidebarView, ListingsView, ListingDetailsView, eventBus) {
'use strict';
var LeftSidebarView = SidebarView.extend({
alignment: 'left',
el: "#leftSidebar",
templateId: '#sidebarTemplate',
initialize : function() {
this.tabs['listings'] = new ListingsView({collection: this.collection);
this.tabs['listingDetails'] = new ListingDetailsView();
}
});
return LeftSidebarView;
});
В моем main.js файл я делаю это:
var leftSidebarView = new LeftSidebarView({collection:listings});
var rightSidebarView = new RightSidebarView({model: searchModel});
Что происходит, так это то, что leftSideBarView, являющийся экземпляром LeftSidebarView и rightSidebarView экземпляра RightSidebarView, имеет 3 члена внутри this.tabs. Это выглядит как. Я все еще считаю себя javascript noob, поэтому я должен спросить, является ли это ожидаемым поведением? Почему это происходит? Я просмотрел документацию _.extend, и он говорит, что возвращает копию, а не ссылку. Поэтому я удивлен этим.
изменить: сформулировал введение немного лучше и немного очистил код.
Это немного сложнее, чем просто вызов продлить. Вот сообщение, чтобы вы попали на правильный путь. http://stackoverflow.com/questions/7735133/backbone-js-view-inheritance –
Моя проблема не в том, что функция parrent не вызывается из-за того, что я ее переопределяю. Проблема у меня в том, что leftSidebarView.tabs === rightSidebarView.tabs – aledujke