2012-06-30 18 views
23

Estoy tratando de descubrir algunos de los 'patrones' para configurar un proyecto Backbone. En los ejemplos a continuación, en la función 'render', el autor devuelve una instancia de 'this'.Backbone render return this

¿Por qué es esto? ¿Es específico para el ejemplo o algo común para Backbone? No veo por qué uno debería devolver 'esto' en la función 'render'.

Los ejemplos

http://backbonefu.com/2011/08/filtering-a-collection-in-backbone-js/

Calling a jQuery plugin in a Backbone render method

Respuesta

28

Esto es sólo una práctica común para que pueda llamar a render() y otra cadena de llamada al método.

Es un patrón común que los Vistas no insertan su contenido HTML en la página, y este trabajo es realizado por la instancia que una instancia del Ver en un primer lugar.

Entonces lo que usted tiene que escribir en el código que instanciar la vista es algo como esto:

var myView = new MyView({ model: myModel }); 
myView.render(); 
$(myDOMElement).html(myView.el); 

Pero si render() devuelve la vista en sí se puede escribir el código anterior como esto:

var myView = new MyView({ model: myModel }); 
$(myDOMElement).html(myView.render().el); 
8

El significado de devolver this, es para proporcionar posibilidades de encadenamiento.

Por ejemplo, supongamos:

var obj = { 
     prop1 : 0, 
     method1 : function(){ 
     }, 
     method2 : function(){ 
     } 
}; 
//Then you could do something like: 
obj.method1(); 
obj.method2(); 
obj.prop1 = 1; 

Todas las acciones en obj que tiene que hacer por separado.

Consideremos ahora:

var obj = { 
     prop1 : 0, 
     method1 : function(){ 
      return this; 
     }, 
     method2 : function(){ 
      return this; 
     } 
}; 
//Now you could do these 
obj.method1().prop1 = 1; 
obj.method1().method2().method1(); 
+0

Gracias es mucho! Comprobé la respuesta de fguillen porque es específica para Backbone.js – Voles

Cuestiones relacionadas