0

私はめったに JS に行き詰まることはありませんが、今回はどこかで何か間違ったことをしたような気がします。

view1 には、次のものがあります。

    listView = new ListView({collection: listElements});
    listView.render();

listElements が変更されるたびに呼び出されます。

ListView では、コレクションがrenderメソッド内のテンプレートに解析され、クリック時にイベントが発生します。

  //ListView.js
  events: {
    "click .listEl": "doStuff"
  ...
  },
  doStuff: function(e) {
    // if this is when the problem arises : this.collection at this place isn't the
    // same collection passed to ListView in view1 (or the collection in
    // the initialize() ).
    // It's actually the first value ever to be rendered with ListElements.

何かご意見は ?

4

1 に答える 1

0

@muistooshort ありがとうございます。

ゾンビのイベント/ビューが原因でした。「すばやく」修正するには、ビューを削除する必要があり、イベントにバインドされた後にこれを実行します。

  this.listView.undelegateEvents();
  $(this.listView.el).removeData().unbind();
  this.listView.$el.html('');

より洗練されたバージョンは、Backbone.View を拡張し、それに remove() メソッドを追加することです。

于 2013-09-06T15:01:28.607 に答える