我正在试图找出一些设置Backbone项目的“模式”。在下面的示例中,在'render'函数中,作者返回'this'的实例。
这是为什么?它是针对示例的,还是Backbone的常见内容?我不明白为什么人们应该在'render'-function中返回'this'。
示例
http://backbonefu.com/2011/08/filtering-a-collection-in-backbone-js/
答案 0 :(得分:28)
这只是一种常见做法,因此您可以调用render()
并链接另一个方法调用。
Views 不会在页面中插入HTML内容是一种常见模式,此作业由实例化 View 的实例完成。第一名。
然后你要在实例化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 );
答案 1 :(得分: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();