1

$watch を理解するのに苦労しています。値をインクリメントするためにタイマーと一緒に使用しています.5秒後に続行したい場合はユーザーにプロンプ​​トを表示しようとしています. 「キャンセル」を選択すると、タイマーのカウントが停止します。

フィドルはこちら: http://jsfiddle.net/nicktest222/VuuEK/4/

// Increment with $timeout
$scope.counter = 0;
$scope.onTimeout = function () {
    $scope.counter++;
    mytimeout = $timeout($scope.onTimeout, 1000);
};
var mytimeout = $timeout($scope.onTimeout, 1000);

// Watch
$scope.$watch($scope.counter, checkTime);

function checkTime() {
    console.log($scope.counter);
    if ($scope.counter === 5) {
        var check = confirm('Do you want to continue?');
        if (check === false) {
            $scope.stop();
        }
    }
}

$scope.counter 変数が毎秒変化しているため、checkTime 関数はページの読み込み時に 1 回起動します。

4

2 に答える 2

5

$watchこれはあなたが望むものです:

    $scope.$watch('counter', checkTime);
于 2013-10-10T22:55:10.683 に答える
2

ジェイソンの答えを拡張するには$watch、パラメーターは単なる文字列であるため、任意のスコープの任意の変数を使用できるため、コントローラー内で監視することもできます$rootScope!

$scope.$watch('counter', ...)

$rootScope.$watch('rootCounter', ...)

于 2013-10-10T23:00:26.800 に答える