tengo un caso que utiliza herencia de vistas, y mi código es esencialmente como:backbone.js ver herencia. `This` resolución de los padres
parentView = Backbone.View.extend({
events: {
"some event": "business"
},
initialize: function(){
_.bindAll(this);
},
business: function(e){
...
this.someFunc && this.someFunc();
...
}
});
childView = parentView.extend({
events: {
...
},
constructor: function(){
this.events = _.extend({}, parentView.prototype.events, this.events);
parentView.prototype.initialize.apply(this);
},
initialize: function(){
_.bindAll(this);
},
someFunc: function(){
...
}
});
Actualización: Movido this.events
extensión al constructor.
Mi vista hija tiene someFunc
y, durante alguna función comercial en la vista principal, debe llamar a esa función si existe. Si this
está configurado correctamente en childView, entonces debería existir this.someFunc
. Esto, sin embargo, no es el comportamiento que estoy experimentando.
Durante la función initialize
(en el elemento principal), this
está configurado de hecho en la vista secundaria. Sin embargo, cuando se activa some event
, se llama a la función business
con this
establecido en parentView
.
Bien, genial. ¿Puede decirme la diferencia entre parentView.prototype.initialize y parentView.constructor.initialize? – idbentley
He actualizado mi pregunta: existe el mismo problema, incluso usando esta técnica. 'parentView.constructor.initialize' no está definido. – idbentley
También he intentado: 'parentView.prototype.constructor', sin suerte. – idbentley