Javascript 主干咖啡脚本超级渲染
如何在主干中调用super的渲染函数(coffeescript) 如果不是咖啡脚本,我听说了Javascript 主干咖啡脚本超级渲染,javascript,inheritance,backbone.js,coffeescript,Javascript,Inheritance,Backbone.js,Coffeescript,如何在主干中调用super的渲染函数(coffeescript) 如果不是咖啡脚本,我听说了 MyModel.__super__.render.call(this); 将起作用,但本例中的MyModel是exports.MyModel,如果它是exports的一个元素,如何使用此函数 提前感谢因为您正试图从渲染方法内部调用超级渲染方法,所以您可以这样做: class TopLevelClass extends Backbone.View initialize: -> @ren
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")
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")
资料来源:
编辑:
@卢布卢索科拉德是正确的。建议
render
返回此
主干网环境中的coffeescript类方法存在一些缺点:
class SecondaryLevelClass扩展TopLevelClass
语法改变了传统的主干扩展模型,这可能会让人困惑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")
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")
另一个选项是这样的混合:您是从子类的render函数内部调用render吗?是的,这就是我要说的,如果其他人想知道,如果您使用传统的主干方法执行
SecondaryLevelClass=TopLevelClass.extend
,这是行不通的,实际上,您确实需要使用CoffeeScript提供的扩展语法