0

このサイトの例を読んでいて、これは私を殺していますが、なぜこのように機能するのかわかりません。値を変更するために使用できるボタンがあるビューに値を返したいと思います。次を使用する場合

   this.$el.empty().html(view.el)

View.el には正しい html が含まれていますが、それらは画面にレンダリングされません。次を使用する場合

    $("#handicap").html( view.el);

値は画面に表示されますが、html コードに onclick 関数を配置すると、イベントが開始されますが、イベントは取得されなくなります。

理想的には、 this.$el.empty().html(view.el) を機能させたいと思います。コンテキストに関係していますが、その理由はわかりません。

ここで jsbin を作成しましたhttp://jsbin.com/iritex/1/edit

$("#handicap").html( view.el) を使用する必要がある場合、イベントのバインドを解除するために何か特別なことをする必要がありますか? 私はすべてを委任解除しようとしましたが、それでもうまくいきませんでした。

ありがとう

4

2 に答える 2

4

バックボーン ビューの el プロパティには、常に有効な DOM オブジェクトへの参照が含まれます。ただし、その DOM オブジェクトは表示ツリーにある場合とない場合があります。必要なときに表示ツリーに表示されるようにするのは、あなた次第です。この機能により、Backbone はビュー要素を画面にレンダリングせずにその状態を維持できます。たとえば、画面からビューを効率的に追加および削除できます。

ビューの要素を表示ツリーに表示するには、いくつかの方法があります。

1) jquery セレクターを「el」プロパティとしてイニシャライザーに渡すことにより、ビューをページ上の既存の DOM 要素に関連付けます。

var view = new MyView({el: '#MyElementSelector'});

2) ビューの「el」プロパティに jQuery セレクターをハードコードすることにより、ビューをページ上の既存の DOM 要素に関連付けます。

var MyView = Backbone.View.extend({
  el: '#MyElementSelector'
});

3) 別のビュー内からページにレンダリングする

var view = new MyView();
view.render();
this.$el.empty().html(view.el);

興味があれば、まとめ たBackbone Demoで例を示します。

于 2012-12-03T20:28:44.600 に答える
0

両方のビューを DOM に配置する必要があります。上記のビューを作成する場所はどこでもthis、DOM に挿入する必要があります。そうすれば、最初の行は正常に機能しますthis.$el.empty().html(view.el)

于 2012-12-03T20:16:10.493 に答える