2

スーパーのレンダー関数をバックボーン (coffeescript) で呼び出すにはどうすればよいですか?

コーヒースクリプトにない場合、私は聞いたことがあります

MyModel.__super__.render.call(this);

動作しますが、この場合の MyModel は exports.MyModel です。エクスポートの要素である場合、この関数をどのように使用すればよいですか?

前もって感謝します

4

2 に答える 2

1

バックボーン環境での coffeescript クラス アプローチにはいくつかの欠点があります。

  1. 構文を使用class SecondaryLevelClass extends TopLevelClassすると、従来のバックボーン拡張モデルが変更されるため、混乱する可能性があります。
  2. 大量の JS コードが生成され、Backbone/Underscore の拡張コードが既に読み込まれています。

次のように、より冗長な方法で 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/

于 2013-05-22T23:49:59.253 に答える
1

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

于 2012-07-12T20:24:59.570 に答える