Estoy tratando de escribir una vista Backbone para un navegador de objetos que está diseñado para implementarse en varios lugares con diferentes tipos de objetos y operaciones ligeramente diferentes. ¿Cómo puedo lograr una buena reutilización del código?Backbone View Herencia
He intentado simplemente ampliar la vista de red troncal en mi navegador y luego extender el navegador en mi implementación; sin embargo, esto me deja con algunas propiedades que se comparten. Este es un efecto no deseado ya que los datos se anexan a todas las implementaciones con cada creación de navegador.
¿Podría alguien arrojar luz sobre una manera de resolver este problema o tal vez una solución alternativa?
Éstos son algunos ejemplos de código para darle una mejor idea de cómo su estado actual:
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({
});
Como siempre, más de retroalimentación de bienvenida en lo que respecta a cualquier aspecto del fragmento de código que he proporcionado.
Gracias, Alex
EDITAR Mi problema es que las subclases comparten la propiedad de colecciones. Aquí hay un ejemplo de mi propia solución que inicializa la propiedad de colecciones a través de un método heredado. jsfiddle.net/JhZXh/3
Hola Sander, lo siento mi pregunta no era lo suficientemente descriptivo. También creé un JS-Fiddle para demostrar mejor el núcleo de mi problema. Tal vez debería haber hecho esto desde el principio. Mi problema es que las subclases comparten la propiedad de colecciones. http://jsfiddle.net/JhZXh/3/ –
en cualquier caso, simplemente agregue ese jsfiddle y la descripción a su publicación original, no todos lo encontrarán aquí en el comentario. Lo echaré un vistazo y veré si puedo encontrar una respuesta más adecuada. – Sander