我有一个主干视图,它正在监听这样的鼠标单击事件:
...[code before]...
events: {
mousedown: "catchMouseClick"
},
...[code after]...
在“catchMouseClick”中,我将创建一个像这样的新视图
...[code before]...
catchMouseClick: function(e) {
//Initialize RightClickMenu
this.rightClickMenu = new RightClickMenu({mouseX:e.pageX,mouseY:e.pageY});
this.rightClickMenu.remove();
},
...[code after]...
如您所见,我使用鼠标单击事件“e”中的 pageX 和 pageY 作为参数来创建 RightClickMenu
最后是我的 RightClickMenu 视图:
var RightClickMenu = Backbone.View.extend({
el:$('#outerDiv'),
render: function(){
$(this.el).append(_.template($('#rightClickTemplate').html()));
$('#rightClickMenuDiv').css('top',this.options.mouseY);
$('#rightClickMenuDiv').css('left',this.options.mouseX);
}
});
我使用“称为”rightClickTemplate 的模板,其 div 的 id 为“rightClickMenuDiv”。
我的问题是,我还能走什么其他路径?因为我不想在这个地方的源代码中有很多 jQuery 选择器。
也许我可以在我的模板中处理这些参数?像这样的东西(未经测试的来源):
<script type="text/template" id="rightClickTemplate">
<div id="rightClickMenuDiv" style="top:<%= mouseY =>, left:<%= mouseX=>">
...
</div>
</script>
所以我可以在加载模板时传递它们。