コードの同じ部分 (prepareMove) を部分的に使用するいくつかの関数 (たとえば、ここの 2 番目のコード サンプル (moveLeft)) を js で取得しました。(コードは、moveLeft 内に prepareMove をコピーするだけで問題なく動作します)
私がしたいこと:イベントが発生する - > prepareMoveが開始する - > moveLeftが開始する(prepareMove関数のスコープにアクセスしている間)
moveLeft内でprepareMoveを呼び出すだけで、moveLeftはprepareMoveで割り当てられた値を取得できないため、スコープの問題が発生すると思います。
このスコープの問題にどのように対処できますか? 私が使用できるdjangoのblock.superのようなものはありますか(〜親コンテナのコードを子に渡し、両方を実行します)?javaScript でこの問題にアプローチする適切な方法は何ですか?
function prepareMove() {
var getCurrent = ptPageXYZarray.filter( function (el) {
return el.isCurrent === true;
})[0];
var currentX = getCurrent.x,
currentY = getCurrent.y,
currentZ = getCurrent.z,
currentYmax = getCurrent.yMax,
currentZmax = getCurrent.zMax;
var newCurrent = function (a,b,c) {
newCurrent = ptPageXYZarray.filter(function(obj) {
return obj.x == a && obj.y == b && obj.z == c;
});
return newCurrent;
};
var outAnimation = function (outAnimationClass) {
getCurrent.ptPageObj.className += ' ' + outAnimationClass;
function removeOutAnimation() {
removeClass(getCurrent.ptPageObj, outAnimationClass);
}
setTimeout(removeOutAnimation,700);
};
...
}
そして2番目の機能があります
function moveLeft() {
prepareMove(); //scope issues here?
if (currentZ === 0 && currentY !== 0) {
newCurrent(currentX,currentY -1,currentZ);
outAnimationClass = "mm-page-visible mm-page-moveToRightFade";
outAnimation(outAnimationClass);
swapCurrentEls();
inAnimationClass = "mm-page-visible mm-page-moveFromLeft";
inAnimation(inAnimationClass);
} else
...
};
イベントでmoveLeft関数を開始します
moveLeft();
進行中の作業 (矢印を使用): http://www.mymlyn.com//page-templates/css-transitions-keyboard/
ビットバケット: [https://bitbucket.org/mymlyn/mymlyn.com/overview][2]