スーパーのレンダー関数をバックボーン (coffeescript) で呼び出すにはどうすればよいですか?
コーヒースクリプトにない場合、私は聞いたことがあります
MyModel.__super__.render.call(this);
動作しますが、この場合の MyModel は exports.MyModel です。エクスポートの要素である場合、この関数をどのように使用すればよいですか?
前もって感謝します
スーパーのレンダー関数をバックボーン (coffeescript) で呼び出すにはどうすればよいですか?
コーヒースクリプトにない場合、私は聞いたことがあります
MyModel.__super__.render.call(this);
動作しますが、この場合の MyModel は exports.MyModel です。エクスポートの要素である場合、この関数をどのように使用すればよいですか?
前もって感謝します
バックボーン環境での coffeescript クラス アプローチにはいくつかの欠点があります。
class SecondaryLevelClass extends TopLevelClass
すると、従来のバックボーン拡張モデルが変更されるため、混乱する可能性があります。次のように、より冗長な方法で 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")
別のオプションは、次のような mixin です: http://pivotallabs.com/a-convenient-super-method-for-backbone-js/
render メソッド内からスーパー render メソッドを呼び出そうとしているので、次のようにすることができます。
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 は正しいです。バックボーンのドキュメントでは、次をrender
返すことを推奨していますthis