0
D3とAngularのディレクティブを作成しています。 newValue
の再割り当てが表示されないため、なぜ私はInfinite $digest loop
エラーが発生し続けるのか分かりません。機能はうまくいきますが、ブラウザの迷惑なエラーが私に掘り下げたいと思っています。ここで
は、ディレクティブのコードです:あなたのコードで
scope.$watch('mode', function (newValue, oldValue) {
if (newValue !== oldValue) {
scope.triggerAnimation();
}
});
scope.triggerAnimation = function() {
var speed = 4;
var start = Date.now();
if (scope.mode === null) {
d3.timer(function() {
var angle = (Date.now() - start) * speed;
var transform = function(d, i) { return "rotate(" + angle/50 + "," + centerX + "," + centerY + ")"; };
svg.selectAll(".sidenode, .sidenodeedge").attr("transform", transform);
if (scope.mode == null) {
return true;
} else {
return false;
}
});
scope.mode = 1;
} else {
scope.mode = null;
}
}
ここで私はダイジェストループが繰り返し呼び出される理由を理解しています。ありがとうございました!しかし、 'if else'ループの' mode'値を変更する必要があります。どのように修正するための任意の提案? – catlovespurple
まず、あなたの仕事に$ watchを使用する必要がありますか?この機能を使わないと解決できないのですか?可能であれば、使用することはお勧めできませんので、避けてください。 2番目:あなたが($ watchで)見て、 'else else'で同じ変数を変更する必要がありますか? – MaKCbIMKo
1 $ watchは必須ではありません...私は他のオプションを使うことができますが、その値が変更であるかどうかを監視する必要があります... 2.同じ変数を変更する必要があります – catlovespurple