2012-06-30 4 views
23

Я пытаюсь выяснить некоторые из «шаблонов», чтобы настроить проект Backbone. В приведенных ниже примерах в функции «render» автор возвращает экземпляр «this».Backbone render return this

Почему это? Является ли это конкретным примером или что-то общее для Backbone? Я не понимаю, почему нужно возвращать «это» в «render» -функцию.

Примеры

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

Calling a jQuery plugin in a Backbone render method

ответ

28

Это просто обычная практика, так что вы можете позвонить render() и приковать другой способ вызова.

Это общая закономерность, что Просмотров не вставить его содержимое HTML на странице, и эта работа выполняется экземпляр, создать экземпляр View в первую очередь.

Тогда то, что вы должны написать в коде, который инстанцировать вид что-то вроде этого:

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

Но если render() возвращается сама View вы можете написать код выше, как это:

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

Значение возврата this, предназначено для оказания возможности цепочки.

Например, предположим:

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

Все действия по obj вам нужно сделать отдельно.

Теперь рассмотрим:

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

Спасибо много! Я проверил ответ fguillen, потому что он специфичен для Backbone.js – Voles