9

Backbone.Marionette を試していますが、Layouts と ItemViews が余分な div を生成し続ける理由について混乱しています。

例はCoffee btwにあります。

AppLayout = Backbone.Marionette.Layout.extend
  template: "#my-layout",

  regions:
    menu: "#menu",
    content: "#content"

MyMenuView = Backbone.Marionette.ItemView.extend
  template: '#project_wiz_nav_template'

MyContentView = Backbone.Marionette.ItemView.extend
  template: '#project_setup_template'

MyApp = new Backbone.Marionette.Application()

MyApp.addRegions
  mainRegion: '#project'

MyApp.addInitializer ->
  layout = new AppLayout()
  MyApp.mainRegion.show(layout)

  layout.menu.show(new MyMenuView())
  layout.content.show(new MyContentView())

MyApp.start()

これは、index.html に含まれるものです。

<div id='project'></div>
<script type='text/template' id='project_wiz_nav_template'> <h2>HI</h2> </script>
<script type='text/template' id='project_setup_template'> <h2>WORLD</h2> </script>
<script id="my-layout" type="text/template">
  <h2>Hello!</h2>
  <div id="menu"></div>
  <div id="content"></div>
</script>

これはそれが生成するものです:

<div id="project">
  <div>
    <h2>Hello!</h2>
    <div id="menu">
      <div> 
        <h2>HI</h2> 
      </div>
    </div>
    <div id="content">
      <div> 
        <h2>WORLD</h2> 
      </div>
    </div>
  </div>
</div>

ご覧のとおり、ビューとレイアウト用に余分な div が生成され続けています。私は追加しようel: '#menu'el: '#content'しましたが、役に立ちませんでした。

4

3 に答える 3

8

これはマリオネットのせいではありません。Backbone は<div>デフォルトでクラスを生成します。tagName属性を介してタグを設定できます。これの重複については、質問に関するコメントを参照してください。

于 2012-06-25T12:44:07.683 に答える
-1

ハックな回避策ですが、jQuery の closest() が実際に私のために仕事をしてくれました。返されたものを直接使用するのではなくmyView.el、私が使用しているのは$(myView.el).closest("div").html()- 私が言ったようにハッキーですが、短期的な修正としては機能しています。
私はこのチュートリアルをいじっていました: http://davidsulc.com/blog/2013/02/03/tutorial-nested-views-using-backbone-marionettes-compositeview/comment-page-1/#comment-3801、ネストされたモデルを作成し、Bootstrap を使用してアコーディオン ビューを作成します。jQueryUIアコーディオンウィジェットのみを使用して、彼の出発点で同じことをしたかったので、ラップされていないビューが戻ってくる必要がありました-したがって、最も近い()でフィルタリングします。
上記のように jqueryUI リンクを追加し、返された HTML を変更する以外は、かなりうまく機能しています。http://dartsleague.parentleafarm.com/superheroes/

于 2013-02-06T19:56:02.277 に答える
-3

el プロパティを指定します。私はそれを修正すると思います:

http://documentcloud.github.com/backbone/#View-el

于 2012-06-25T03:57:29.757 に答える