如何在backbone(coffeescript)中调用super的渲染函数?Backbone Coffeescript Super Render
如果不是在CoffeeScript中,我听说
MyModel.__super__.render.call(this);
的工作,但为MyModel在这种情况下是exports.MyModel,我怎么使用这个功能,如果其出口的元素?
在此先感谢
如何在backbone(coffeescript)中调用super的渲染函数?Backbone Coffeescript Super Render
如果不是在CoffeeScript中,我听说
MyModel.__super__.render.call(this);
的工作,但为MyModel在这种情况下是exports.MyModel,我怎么使用这个功能,如果其出口的元素?
在此先感谢
既然你试图调用超从内渲染方法渲染方法,你可以只这样的事情:
class TopLevelClass extends Backbone.View
initialize: ->
@render()
render: ->
console.log 'Render TopLevelClass'
@ # return this
class SecondaryLevelClass extends TopLevelClass
initialize: ->
@render()
render: ->
super()
console.log 'Render SecondaryLevelClass'
@ # return this
t = new TopLevelClass
# el: $("#first_div")
s = new SecondaryLevelClass
# el: $("#second_div")
来源: http://coffeescript.org/#classes
编辑: @lublushokolad是正确的。该Backbone documentation建议render
回报this
也有一些弊端,给CoffeeScript的类方法中的骨干环境:
class SecondaryLevelClass extends TopLevelClass
语法改变了传统骨干扩展模型,这可能会造成混乱。这可能是值得使用常规的骨干与调用一个更详细的方式超强的权衡扩展语法,就像这样:
TopLevelClass Backbone.View.extend
initialize: -> @render()
render: ->
console.log 'Render TopLevelClass'
@
SecondaryLevelClass = TopLevelClass.extend
initialize: -> @render()
render: ->
SecondaryLevelClass.__super__.initialize.call(this)
console.log 'Render SecondaryLevelClass'
@
t = new TopLevelClass # el: $("#first_div")
s = new SecondaryLevelClass # el: $("#second_div")
另一种选择是这样一个mixin:http://pivotallabs.com/a-convenient-super-method-for-backbone-js/
你是从子类的渲染函数内部调用渲染吗? – Sandro 2012-07-12 20:08:59
是的,这就是我要去的 – willm 2012-07-12 20:11:57