如何在骨干(coffeescript)中调用super的渲染功能?
如果不是coffeescript,我听说过
MyModel.__super__.render.call(this);
可以工作,但在这种情况下MyModel是exports.MyModel,如果它是一个导出元素,我如何使用这个函数?
提前致谢
答案 0 :(得分:1)
由于你试图从渲染方法中调用超级渲染方法,你可以这样:
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
答案 1 :(得分:1)
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/