我对骨干很陌生,所以我这样做可能违反了骨干的本质。建议表示赞赏:
我做了一个墙式系统。所以有一个表格可以用来在墙上发布更新。
每个更新都可以对它们进行评论。我一次显示 10 个更新。所以有10个评论表格。所以我有一个看法:
CommentForm=Backbone.View.extend({
initialize:function(messageView){
},
events:{
"submit":"postcomment"
},
showMessage:function(data){
if(data.success)
type="success";
else
type="error";
message=data.error?data.error:"Update posted successfully";
$messageContainer=$this.prev();
console.log($this);
var html="<div class='alert alert-"+type+"'>"+message+"</div>";
$($messageContainer).html(html);
},
postcomment:function(){
$this=$(this.el);
$.post(baseUrl+"/portal/post-comment",$this.serialize(),this.showMessage,"json");
return false;
}
});
现在我为它创建一个实例,如下所示:
commentFormView= new CommentForm({el:$(".comment-form form")});
注意 .comment-form 是一个 div。有多个这样的元素。事件处理程序可以很好地附加到所有评论表单。但是当我使用$this=$(this.el);
它时,它总是指第一个评论表单。我该如何解决这个问题。$(this.el) 应该引用评论表单的当前实例,其中事件被触发而不是第一个