0

我正在尝试制作一个带有处理mousedownmouseupjQuery 事件的视图的小应用程序。

我有一个getCoords方法,它返回给定鼠标事件的坐标,我从中调用该方法determineEvent,并存储mousedownin的坐标mouseDownCoords。它还返回mouseDownCoords变量。这个方法的目的是为了区分点击和拖动事件,但为了简洁我省略了代码)

该方法doStuff被触发mouseup并将 mouseup 的坐标存储在mouseUpCoords. 问题是我不知道如何从这个方法中访问 mouseDownCoords 变量。

我虽然通过代码手动触发事件,但这没有多大意义(从 mousedown 事件处理程序触发 mouseup 事件......)也调用determineEvent方法 from 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

1

如果您想要快速解决方案,请将其存储在视图中:

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

doStuff: function(e, mouseDownCoords) {
  var mouseUpCoords = this.getCoords(e);
  //use this.mouseDownCoords
  //do stuff with mouseUpCoords and mouseDownCoords
}
于 2013-11-13T11:32:13.827 回答
0

Wrt Backbone,您应该有一个附加到视图的模型,该模型将包含渲染视图所需的必要数据。

我建议您应该添加一个模型来查看和设置这些 mouseDownCoords,并mouseUpCoords作为该模型的一部分,可以在任何给定时间在视图中访问。

如果您不想严格遵循 Backbone 方式,则只需将坐标作为变量存储在视图中,但不建议这样做

于 2013-11-13T11:29:37.893 回答