t1
은 한 번만 검사되기 때문입니다. 간격을 설정하면 변수가 "b"인지, 그보다 더 큰지 알 수 있습니다. 그 순간에 변수가 "b"가 아니라면 결코 지워지지 않을 것입니다.
관찰자를 다시 호출하면 새 간격을 만들고 해당 검사를 다시 실행합니다. 변수 "b"가 현재 해당 간격을 종료하면 마지막으로 호출 된 간격에서 아무 것도 수행하지 않습니다.
처음으로 생성 될 때만 간격을 생성하는 것과 같은 것이 좋습니다.
scope.$watch(function() { return scope.state; }, function() {
var t1 = scope.state;
if (!scope.myInterval) { //if there is no interval create it
function timer() {
console.log(t1);
}
scope.myInterval = setInterval(timer, 2500);
}
if (t1 != "b") {
clearInterval(scope.myInterval);
//delete scope.myInterval;
}
});
그리고 당신은 각 사용하고 있기 때문에, 당신은 아마 그들의 $ interval를 사용해야합니다. 범위에 대한
그리고하지 ... T1 한 번 검사 만하기 때문에
가
var myInterval;
scope.$watch(function() { return scope.state; }, function() {
var t1 = scope.state;
if (!myInterval) { //if there is no interval create it
function timer() {
console.log(t1);
}
myInterval= setInterval(timer, 2500);
}
if (t1 != "b") {
clearInterval(myInterval);
myInterval = null;
}
});
... 당신은 간격을 설정하고 그것을 확인 후 바로 당신이 변수가 "B"인지 확인하고 그것을보다 . 그 순간에 변수가 "b"가 아니라면 결코 지워지지 않을 것입니다. – epascarello
하지만 시계에 제 기능이 있습니다. 나는 t1을 생각하고있었습니다! = "b"는 scope.state의 $ watch가 "b"가 될 때 확인됩니다. – user2934433
아래에서 내 대답을 읽고 어디에 어떤 일이 일어나고 있는지 자세히 설명해주었습니다. – epascarello