0

我正在属于我创建的对象的函数内创建“可拖动”对象的新实例(来自 script.aculo.us 拖放模块)。让我们将该对象称为“Person”对象。很容易。但是,从 Draggable 对象的“onEnd”函数内部,我需要调用另一个函数 getCell(),它也属于前面提到的“Person”对象。有点循环,我知道,但我希望我知道如何做到这一点。我尝试过的没有任何效果。可以做到吗?下面是一个为简洁起见经过大量编辑的示例,但我希望它传达了我的意图。我将不胜感激这里的任何见解。谢谢。

var Person = Class.create({
  initialize: function(name) {
    this.name = name;
  },        
  move: function(p) {
    p = new Draggable(p, {     
     onEnd: function(d) {      
      var pos = getCell(d.element);
      .......
      .......
     }
     .......
     .......
    });
  },
  getCell: function(t) {
    var pos = t.positionedOffset();
    return [(pos.left / 64).floor(), (pos.top /64).floor()];
  }
});    
4

2 回答 2

0

尝试Function.bind

var Person = Class.create({
  initialize: function(name) {
    this.name = name;
  },        
  move: function(p) {
    p = new Draggable(p, {     
     onEnd: function(d) {      
      var pos = this.getCell(d.element);
      .......
      .......
     }.bind(this)
     .......
     .......
    });
  },
  getCell: function(t) {
    var pos = t.positionedOffset();
    return [(pos.left / 64).floor(), (pos.top /64).floor()];
  }
});
于 2009-08-04T14:56:36.283 回答
0

尝试

move: function(p) {
    p = new Draggable(p, {     
     onEnd: function(d) {      
      var pos = p.getCell(d.element);
      .......
      .......
     }
     .......
     .......
    });
  },

或者

move: function(p) {
    var getCell = function (el) {
        return p.getCell ( el );
    };

    p = new Draggable(p, {     
     onEnd: function(d) {      
      var pos = getCell(d.element);
      .......
      .......
     }
     .......
     .......
    });
  },
于 2009-08-04T02:33:43.813 回答