1

この投稿を参照してください: Backbone.js : ビューを再作成または再作成しますか?

私は基本的に投票数が最も多いものを使用していますが、ルーターからのビューを表示する際に受け入れられた回答ではありません。

だから私は本質的に呼び出します

this.unbind();
this.remove();

私が抱えている問題は、左側のナビゲーション パネルがあり、右側にコンテンツがあることです。次のようになります。

<div class="container-fluid">
    <div class="row-fluid">
        <div class="span2">
            // nav bar stuff
        </div>
        <div class="span10">
            <div id="content-container"></div>
        </div>
    </div>
</div>

したがって、ビューで this.remove() を呼び出すと、基本的に次のようになります。

<div class="span10"></div>

div コンテナが消えます。バックボーン ビューを削除するか、バックボーン ビューを挿入する最善の方法がわかりませんでし<div id="content-container"></div>た。ビューを破棄し、remove() を呼び出した後、DOM を調べてコンテンツ コンテナーを挿入できると思いますが、もっと良い方法があるはずです。何かご意見は?前もって感謝します。

4

1 に答える 1

2

細かいマニュアルから:

削除する view.remove()

DOM からビューを削除し、stopListeningを呼び出して、ビューがlistenToしたバインドされたイベントを削除します。

この実装は、英語を JavaScript に厳密に音訳したものです。

remove: function() {
  this.$el.remove();
  this.stopListening();
  return this;
}

そのthis.$el.remove()呼び出しは、要素を DOM から削除します。

あなたの問題は、これをビューの として使用していることですel:

<div id="content-container"></div>

view.remove()削除します#content-container

解決策があります:

  1. ビューに独自のビューを作成させ、それを のel入れます。#content-container
  2. removeメソッドをオーバーライドします。

    remove: function() {
        this.unbind();
        this.stopListening();
        // No this.$el.remove() since we don't own the `el`
        return this;
    }
    
于 2013-11-06T21:11:40.410 に答える