我试图找出一些“模式”来建立一个骨干项目。在下面的示例中,在“render”函数中,作者返回了一个“this”的实例。
为什么是这样?它是特定于示例的,还是 Backbone 常见的?我不明白为什么要在“渲染”函数中返回“this”。
例子
http://backbonefu.com/2011/08/filtering-a-collection-in-backbone-js/
我试图找出一些“模式”来建立一个骨干项目。在下面的示例中,在“render”函数中,作者返回了一个“this”的实例。
为什么是这样?它是特定于示例的,还是 Backbone 常见的?我不明白为什么要在“渲染”函数中返回“this”。
例子
http://backbonefu.com/2011/08/filtering-a-collection-in-backbone-js/
这只是一种常见做法,因此您可以调用render()
并链接另一个方法调用。
View不会在页面中插入其 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 );
返回的意思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();