将返回值作为主干视图方法之间的参数传递

Pass return values as arguments between Backbone View methods

本文关键字:方法 之间 参数传递 视图 返回值      更新时间:2023-09-26

我正在尝试创建一个带有处理mousedownmouseup jQuery事件的视图的小应用程序。

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

方法doStuffmouseup触发,并将鼠标向上的坐标存储在mouseUpCoords中。问题是我不知道如何从此方法中访问 mouseDownCoords 变量。

我虽然通过代码手动触发事件,但这没有多大意义(从鼠标按下事件处理程序触发鼠标打开事件......也从doStuff调用 determineEvent 方法,没有意义,因为我正在向它传递一个不同的事件(鼠标向上)

这是我的视图代码

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

任何指针都会有所帮助:)

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

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
}

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

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

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