0

jQueryイベントmousedownを処理するビューを備えた小さなアプリケーションを作成しようとしています。mouseup

特定のマウス イベントの座標をgetCoords返すメソッドがあり、そのメソッドを から呼び出しdetermineEvent、の座標を に保存mousedownmouseDownCoordsます。また、mouseDownCoords変数を返します。このメソッドの目的は、クリック イベントとドラッグ イベントを区別することですが、簡潔にするためにコードを省略しました)。

メソッドdoStuffは でトリガーされmouseup、マウスアップの座標を に保存しmouseUpCoordsます。問題は、このメソッド内から mouseDownCoords 変数にアクセスする方法がわからないことです。

私はコードを介して手動でイベントをトリガーすることを考えましたが、それはあまり意味がありません (mousedown イベントハンドラーから mouseup イベントをトリガーする...) また、determineEventからメソッドを呼び出すdoStuffことは意味がありません。それへのイベント(マウスアップ)

これが私のビューコードです

var ScreenView = Backbone.View.extend({
  tagName: 'div',
  className:"screen",
  events: {
    "mousedown": "determineScreenEvent",
    "mouseup": "doStuff"
  },

  getCoords: function(e) {
    var screenOffset = this.$el.offset();
    var coords = [e.pageX - screenOffset.left, e.pageY - screenOffset.top];
    return coords;
  },

  determineEvent: function(e) {
    mouseDownCoords = this.getCoords(e);
    return mouseDownCoords;
    //code for distinguishing between click/drag
  },

  doStuff: function(e, mouseDownCoords) {
    mouseUpCoords = this.getCoords(e);
    //do stuff with mouseUpCoords and mouseDownCoords
  }

});

どんなポインタも役に立ちます:)

4

2 に答える 2

0

Wrt Backbone では、ビューをレンダリングするために必要なデータを含むモデルをビューにアタッチする必要があります。

mouseDownCoordsこれらを表示および設定するモデルを追加し、 mouseUpCoordsそのモデルの一部としていつでもビュー内でアクセスできるようにすることをお勧めします。

バックボーンの方法に厳密に従いたくない場合は、座標を変数としてビューに保存するだけですが、これはお勧めしません

于 2013-11-13T11:29:37.893 に答える