如何在主干(coffeescript)中调用超级的渲染功能?
如果不是在咖啡脚本中,我听说过
MyModel.__super__.render.call(this);
会起作用,但在这种情况下,MyModel 是exports.MyModel,如果它是exports 的一个元素,我该如何使用它?
提前致谢
如何在主干(coffeescript)中调用超级的渲染功能?
如果不是在咖啡脚本中,我听说过
MyModel.__super__.render.call(this);
会起作用,但在这种情况下,MyModel 是exports.MyModel,如果它是exports 的一个元素,我该如何使用它?
提前致谢
由于您尝试从渲染方法内部调用超级渲染方法,因此您可以像这样:
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文档建议render
返回this
在 Backbone 环境中,coffeescript 类方法有一些缺点:
class SecondaryLevelClass extends TopLevelClass
语法会改变传统的 Backbone 扩展模型,这可能会造成混淆。使用常规的 Backbone 扩展语法与以更详细的方式调用 super 的权衡可能是值得的,如下所示:
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")
另一种选择是这样的混合:http: //pivotallabs.com/a-convenient-super-method-for-backbone-js/