4


Backbonejs を使用して Web アプリを開発しています。Backbone ビューのダブルクリック イベント ハンドラに div1 の新しい位置を渡す必要があるユース ケースがあります。

私のコードは次のようになります

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});
4

3 に答える 3

4

あなたはそれを行うことができます:div名前を持つ新しいフィールドを追加する必要がdata-yourfieldNameあり、js呼び出しから:

yourFunctionName: function(e) {
    e.preventDefault();
    var email = $(e.currentTarget).data("yourfieldName");

}
于 2013-03-11T08:08:47.257 に答える
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});
于 2013-03-11T08:09:15.333 に答える
2

ビュー要素が jquery ウィジェットの子要素であると仮定すると、クリック ハンドラーで必要な値を取得するのがおそらく最善の方法です。

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 ウィジェットが常にビュー要素の直接の親である場合はparents('.widget-selector:first')parent();に置き換えることができます。.widget-selectorそれ以外の場合は、jquery ウィジェットで機能するセレクターに置き換える必要があります。

于 2013-03-11T15:30:50.240 に答える