0

我有这样的看法:

class MyView1 extends Backbone.Marionette.Layout
  template: JST['templates/view1']

  regions:
     region1: '.region1'

  ## Here some methods....

现在我想扩展这个类来添加一些区域和方法

class MyView2 extends MyView1
  template: JST['templates/view2']

  regions:
    region2: '.region2'

这会覆盖模板和区域属性。但我想将 region2 添加到区域哈希中,而不是覆盖它。所以 region 将是 region1 和 region2 的哈希值。

我怎么才能得到它?

4

1 回答 1

1

这是一个解决方法:

class MyView1 extends Backbone.Marionette.Layout
  template: JST['templates/view1']

  regions:
    region1: '.region1'

class MyView2 extends MyView1
  template: JST['templates/view2']

  MyView2::regions = {}
  for k, v of MyView1::regions
    MyView2::regions[k] = v
  MyView2::regions.region2 = '.region2'

但也许以下内容会更干净,并且同样可以很好地满足您的目的:

class MyView1 extends Backbone.Marionette.Layout
  constructor: ->
    @regions =
      region1: '.region1'

  template: JST['templates/view1']

class MyView2 extends MyView1
  constructor: ->
    super()
    @regions.region2 = '.region2'

  template: JST['templates/view2']

正如评论所建议的那样,编辑为使用更惯用的 coffeescript::而不是.prototype

于 2013-08-14T12:48:20.777 回答