こんにちは、バックボーン js で問題が発生しています
コメントビューがあります
class window.CommentView extends Backbone.View
el: $('.comment')
initialize: ->
@$el.show()
events:
"click": "renderCommentBoxView"
renderCommentBoxView: ->
@commentBoxView = new CommentBoxView
id: this.$('.comment')['context']['activeElement']['id']
model: new Item
el: @el
と A コメント ボックス ビュー
class window.CommentBoxView extends Backbone.View
el: $('.commentBoxMain')
events:
"click.comment": "showCommentBox"
"click document": "stopEvent"
"click .login_button": "submitComment"
initialize: ->
@showCommentBox()
stopEvent: (event) ->
event.stopPropagation()
showCommentBox: ->
$(@el).append('<textarea class=\'commentBox\'></textarea><br/><input type=\'button\' class=\'login_button\' name=\'Add a comment\' value=\'Add a comment\'><span class=\'loading\' style=\'display: none;\'>Loading...</span>')
現在、ユーザーがコメントできるアイテムは複数あります。したがって、コメント ボタンがクリックされるたびに、要素とモデルを定義する CommentBoxView という新しいビューをレンダリングします。
問題は、ビューをバインドする必要がある現在クリックされている要素を取得できないことです。
私のサンプル HTML は次のようになります。
<div id="item_1">
<a class="comment" href='javascript:void(0)'>Comment</a>
<div class="commentMainBox"></div>
</div>
<div id="item_2">
<a class="comment" href='javascript:void(0)'>Comment</a>
<div class="commentMainBox"></div>
</div>
コメント リンクがクリックされるたびに、html を作成して commentMainBox にダンプします。しかし問題は、クリックされた要素が常に私のページのクラスコメントを持つ最初の要素であることです。現在クリックされている要素を取得して、コンテンツを正しい div にレンダリングするにはどうすればよいですか。
また、CommentBoxView の要素も必要ですel: $('.commentBoxMain')
が、これを割り当てると、ビューに何もレンダリングされませんが、初期化するel: $('.comment')
とコメント ボックスが表示されますが、どのコメントがクリックされても常に最初のコメントの下にレンダリングされます。
どこが間違っていますか?