私はバックボーンにかなり慣れていないので、これを行う際にバックボーンの本質に違反している可能性があります。提案をいただければ幸いです。
私は壁のようなシステムを作りました。そのため、壁に更新を投稿するために使用できるフォームがあります。
各更新にはコメントを付けることができます。一度に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)は、最初のイベントではなく、イベントがトリガーされたコメントフォームの現在のインスタンスを参照する必要があります