0

イベントを発生させることができないようです。

複数のビューと単一のビューは次のとおりです。

独身:

PartyView =  Backbone.View.extend({
tagName: 'span',
className: 'aParty',
senderTemplate: _.template($('#senderTemplate').html()),
recipientTemplate: _.template($('#recipientTemplate').html()),
render: function () {
if (this.model.get("isSender")=="1")
    $("#senders").append(this.senderTemplate(this.model.toJSON()))
else
    $("#recipients").append(this.recipientTemplate(this.model.toJSON()))
},
events: {
    "click .delete":"deleteParty",
    'click #recipients': "sayhi"
},
sayhi : function () { console.log ("hi"); },
deleteParty:function () {
    this.model.destroy();
    this.remove();
}
})

多数:

PartiesView = Backbone.View.extend({
className: "partiesView",
senderTemplate: _.template($('#senderTemplate').html()),
recipientTemplate: _.template($('#recipientTemplate').html()),
render: function(eventName) {
    $("#senders").empty();
    $("#recipients").empty();
  _.each(this.model.models, function(party){
      var partyview = new PartyView ({ model: party })
      partyview.render();
  }, this);

  return this;
},
events : {
'click #recipients': "sayhi"
},
sayhi : function () { console.log ("hi"); }
});

コンソール エラーは発生せず、すべて正常にレンダリングされます。sayhi または delete イベントを発生させることはできません。テンプレートでイベントが失われることに最も密接に関連していると思われますが、実際には何時間もそれを理解しようとしています. 任意のガイダンスをいただければ幸いです!!

編集1:

テンプレートは次のとおりです。

<script type='text/template' id='senderTemplate'>
<span class='greenbubble'><%= email%>&nbsp;<button class='delete'>x</button></span>&nbsp;&nbsp;
</script>

<script type='text/template' id='recipientTemplate'>
<span class='lightbluebubble'><%= email%>&nbsp;<button class='delete'>x</button></span>&nbsp;&nbsp;
</script>

編集2:

#senders#recipients現在HTMLにある

<div id='partiesView'>
Senders:<span id='senders'></span><BR>
Recipients:<span id='recipients'></span>
</div>

編集3:

フィドルの最終作業バージョン!!

フィドルの最終バージョン

4

1 に答える 1

3

私は#recipients参照を疑っています。ビューのeventsプロパティは、ビューの 内にあるアイテムにのみ委任され、ビューのどこにも表示されませelん。#recipientsがこれらの両方のビューの外にある場合#recipients、起動しません。

コメントに基づいて編集

次のようなことをするべきではありません。

$("#senders").append(this.senderTemplate(this.model.toJSON()))

ビューの$el. 代わりに、次のようにします。

this.$("#senders").append(this.senderTemplate(this.model.toJSON()))

バインドするすべての要素は、ビューの 内に含まれている必要があります$el。そうでない場合、適切にバインドされません。それはおそらく、. だけでなく、すべてのバインディングの根本的な原因です#recipients

于 2013-09-08T17:24:05.160 に答える