JavaScriptで別のオブジェクトに属する関数を呼び出す方法(script.aculo.usを使用)
-
22-07-2019 - |
質問
作成したオブジェクトに属する関数内に、「script.aculo.us dragdropモジュールから」「Draggable」オブジェクトの新しいインスタンスを作成しています。そのオブジェクトを「Person」オブジェクトと呼びましょう。簡単です。ただし、Draggableオブジェクト内の「onEnd」関数内から、前述の「Person」オブジェクトに属する別の関数getCell()を呼び出す必要があります。循環器のようなものは知っていますが、これを行う方法を知っていたらいいのにと思います。私が試したことは何もありません。できますか?以下は簡潔にするために大幅に編集された例ですが、それが私の意図を伝えることを願っています。ここでの洞察に感謝します。ありがとう。
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()];
}
});
解決
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()];
}
});
他のヒント
試用
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);
.......
.......
}
.......
.......
});
},
所属していません StackOverflow