我正在使用Backbonejs开发一个Web应用程序。
我有一个用例,我必须将div1的新位置传递给Backbone视图的双击事件处理程序。
我的代码看起来像
var MyView = Backbone.Views.extend({
events: {
'dblclick #div1' : 'div1ClickHandler' //here I want to pass new offset for #div1
}
});
div1ClickHandler: function()
{
......
}
var myView = new MyView({model: myModel,el : #div1});
答案 0 :(得分:4)
你可以这样做:在div
内你需要添加一个名为data-yourfieldName
的新字段,并从js调用:
yourFunctionName: function(e) {
e.preventDefault();
var email = $(e.currentTarget).data("yourfieldName");
}
答案 1 :(得分:2)
您可以在视图中传递窗口小部件,然后您就可以完全控制窗口小部件。
var MyView = Backbone.Views.extend({
initialize: function(options) {
this.widget = options.widget; // You will get widget here which you passed at the time of view creation
}
events: {
'dblclick #div1' : 'div1ClickHandler' //here I want to pass new offset for #div1
}
});
div1ClickHandler: function() {
// Query to fetch new position and dimensions using widget
// update the respective element
}
var myView = new MyView({model: myModel, el: $('#div1'), widget: widgetInstance});
答案 2 :(得分:2)
假设你的view元素是jquery小部件的子元素,那么最好的办法就是在click处理程序中获取你需要的值:
var MyView = Backbone.Views.extend({
events: {
'dblclick #div1' : 'div1ClickHandler'
}
});
div1ClickHandler: function()
{
var $this = $(this);
var $widget = $this.parents('.widget-selector:first');
$this.offset($widget.offset());
$this.height($widget.height());
$this.width($widget.width());
}
var myView = new MyView({model: myModel,el : #div1});
如果jquery小部件始终是view元素的直接父级,则可以将parents('.widget-selector:first')
替换为parent()
;否则,您需要使用适用于jquery小部件的选择器替换.widget-selector
。