3

私のアプリケーションでは、アプリがバックグラウンドで新しいデータを定期的にポーリングするかどうかをユーザーが切り替えるためのチェックボックスを提供したいと思います。データポーリングを行うための時計をセットアップしました。また、作成時にその時計に変数を割り当てると、その変数を呼び出すことができ、時計が無効化/登録解除されることを知っています。私の問題は、ユーザーがテキストボックスをクリックしてオンにしたときに、時計を元の状態に戻したいということです。私はそれを成し遂げるための最良の方法を見つけていません。これが私のサンプルフィドルで、問題をいくらか説明しています。私はそれをそこで動かすことができれば、残りの部分を整えることができると思います。動作していない部分は、時計をオンラインに戻す必要がある部分です。

 if ($scope.counter === 15) {
        $scope.$watch('counter', theWatchFunction);
        $scope.test = "back on";
    }
4

2 に答える 2

4

ウォッチャーを単に登録解除して、自動的に再登録されるのを待つことはできません。myWatch()内のすべてを実行した瞬間、theWatchFunction二度と実行されません。新しいウォッチャーを登録できますtheWatchFunction.

たとえば、counterウォッチャーにウォッチャーを再登録できますtime: http://jsfiddle.net/bmleite/Lw3Lp/

于 2013-02-04T16:22:50.960 に答える
0

jsfiddle が機能しない理由は、カウンター 7 で時計をキャンセルしたためです。時計をオンに戻すコードは theWatchFunction にあったため、時計が無効になっているため、その関数は実行されていないため、呼び出されることはありません。

タイムアウト機能で時計を元に戻すカウンターにチェックを入れましたが、正しく機能しているようです。

    $timeout(function () {
        $scope.time = new Date();
        $scope.counter++;
        if ($scope.counter === 15) {
           myWatch = $scope.$watch('counter', theWatchFunction);
        }
    }, 1000);

私は、あなたを道に導くはずの作業バージョンを示すフィドルをフォークしました。それが役立つことを願っています!

于 2013-02-04T16:22:43.407 に答える