嗨,我遇到了骨干 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
和评论框视图
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')
,我会看到评论框,但是无论单击哪个评论,它总是在第一个评论下呈现。
我哪里错了?