Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js Can';不要让骨干事件发生;将模型渲染到多个位置_Backbone.js - Fatal编程技术网

Backbone.js Can';不要让骨干事件发生;将模型渲染到多个位置

Backbone.js Can';不要让骨干事件发生;将模型渲染到多个位置,backbone.js,Backbone.js,我似乎无法让事件发生 以下是多视图和单视图: 单一: PartyView = Backbone.View.extend({ tagName: 'span', className: 'aParty', senderTemplate: _.template($('#senderTemplate').html()), recipientTemplate: _.template($('#recipientTemplate').html()), render: function () { if (thi

我似乎无法让事件发生

以下是多视图和单视图:

单一:

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或删除事件触发。我怀疑它与和有着最密切的关系,但实际上,我已经花了好几个小时试图弄清楚这一点。任何指导都将不胜感激

编辑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>
编辑3:

一把小提琴的最终工作版本


我对
#收件人的参考资料表示怀疑。视图的
events
属性仅委托给视图的
el
中的项目,我在任何视图中都看不到
#收件人。如果
#recipients
在这两个视图之外,则不会触发

根据评论进行编辑

你不应该做这种事:

$("#senders").append(this.senderTemplate(this.model.toJSON()))
因为您可能正在修改视图的
$el
之外的元素。相反,请执行以下操作:

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

您希望绑定到的所有元素都应包含在视图的
$el
中。如果没有,它们就无法正确绑定。这可能是所有绑定的根本原因,而不仅仅是
#recipients

我怀疑
#recipients
引用。视图的
events
属性仅委托给视图的
el
中的项目,我在任何视图中都看不到
#收件人。如果
#recipients
在这两个视图之外,则不会触发

根据评论进行编辑

你不应该做这种事:

$("#senders").append(this.senderTemplate(this.model.toJSON()))
因为您可能正在修改视图的
$el
之外的元素。相反,请执行以下操作:

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

您希望绑定到的所有元素都应包含在视图的
$el
中。如果没有,它们就无法正确绑定。这可能是所有绑定的根本原因,而不仅仅是
#接收者

表面上的
删除
连接看起来正常;你能帮我们摆弄一把小提琴吗?在表面上,
delete
接线看起来不错;你能帮我们摆好小提琴做实验吗?我也会怀疑发送者。除了它自己的
el
之外,视图几乎不应该与DOM的任何部分发生冲突,并且视图应该几乎总是创建并完全控制它自己的
el
。啊,我明白了。那么,如果模型在集合视图中,是否可以将其渲染到不同的点?i、 e.让
partiesView
作为收藏的
el
,让模型呈现给
#发送者
#接收者
,这取决于它是哪种模型?是的,通常情况下,您会有一个以
#partiesView
作为其
el
的视图,然后您可以在该视图中侦听事件,如
“单击发件人。删除”
,然后执行修改HTML之类的操作。如果您的视图是完全独立的,并且它们使用
this.$()
而不是
$()
来操作它们的内部结构,那么您会过得更好。更新了此答案以纳入这些见解。你们都说得很对。克里斯和穆,谢谢你们的意见!!克里斯,我不必非得这么说。$(“#发件人”)
,但你的方向肯定是对的。我需要模型视图将其渲染为
el
,并将其提供给集合视图以附加到正确的位置。我制作了一把小提琴,上面有完整的版本。请参阅相关链接。我也会怀疑
#发件人。除了它自己的
el
之外,视图几乎不应该与DOM的任何部分发生冲突,并且视图应该几乎总是创建并完全控制它自己的
el
。啊,我明白了。那么,如果模型在集合视图中,是否可以将其渲染到不同的点?i、 e.让
partiesView
作为收藏的
el
,让模型呈现给
#发送者
#接收者
,这取决于它是哪种模型?是的,通常情况下,您会有一个以
#partiesView
作为其
el
的视图,然后您可以在该视图中侦听事件,如
“单击发件人。删除”
,然后执行修改HTML之类的操作。如果您的视图是完全独立的,并且它们使用
this.$()
而不是
$()
来操作它们的内部结构,那么您会过得更好。更新了此答案以纳入这些见解。你们都说得很对。克里斯和穆,谢谢你们的意见!!克里斯,我不必非得这么说。$(“#发件人”)
,但你的方向肯定是对的。我需要模型视图将其渲染为
el
,并将其提供给集合视图以附加到正确的位置。我制作了一把小提琴,上面有完整的版本。请参阅相关链接。