如何在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