Función de vista de llamada desde la subvista con BackboneJS

Me gustaría saber si es posible llamar a una function de vista desde una subvista con BackboneJS. Si es así, ¿cómo está funcionando?

Quiero llamar a la function "hola" que pertenece a la vista principal desde la subvista.

Tal vez si el evento desencadena …

Ejemplo:

var MainView = Backbone.View.extend({ initialize: function() { this.$template = $(template); this.subview = new SubView(); this.render(); }, render: function() { this.$el.html(this.$template); var element = this.$template.attr('id'); this.subview.setElement('#'+element).render(); }, hello: function() { alert('Hello'); } }); var SubView = Backbone.View.extend({ initialize: function() { this.$template = $(template); this.render(); }, render: function() { this.$el.html(this.$template); //Call view function ' hello ' //parentView.hello(); } }); 

¡Gracias!

Puede pasar una reference de su vista principal a su subvista:

http://jsfiddle.net/puleos/hecNz/

 var MainView = Backbone.View.extend({ initialize: function() { this.$template = $("<span>foo</span>"); this.subview = new SubView({parent: this}); this.render(); }, render: function() { this.$el.html(this.$template); var element = this.$template.attr('id'); this.subview.setElement('#'+element).render(); }, hello: function() { alert('Hello'); } }); var SubView = Backbone.View.extend({ initialize: function(options) { this.$template = $("<span>bar</span>"); this.parent = options.parent; this.render(); }, render: function() { this.$el.html(this.$template); this.parent.hello(); } }); var mainView = new MainView(); console.log(mainView); 

Puede intentar ampliar la MainView esta manera:

var SubView = MainView.extend({ });

Eso debería entonces darle una reference a la function hello dentro de MainView .

O bien, en SubView , agregue esto a su function de render :

 MainView.prototype.hello.call(this) 

Eso llamaría a la function hello en MainView utilizando el context (plantilla, otros vars, etc.) de la instancia de SubView .