2013-02-04 44 views
3

在我的應用程序中,我想提供一個用於切換應用程序是否定期輪詢新數據的複選框。 我已經安裝了一塊手錶來完成數據輪詢。而且我知道,如果我在創建時爲該手錶分配變量,則可以調用該變量,手錶將被禁用/未註冊。 我的問題是,當用戶點擊文本框,我想手錶恢復生機。我還沒有找到完成這件事的最好方法。 這是我的示例fiddle這有點說明了這個問題。我想如果我能在這裏工作,我可以將其餘部分加以修改。 不工作的部分是哪裏的手錶需要回來就行了一部分:註冊並取消註冊angular js手錶

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

回答

4

您不能簡單地取消註冊觀察者並等待它自動重新註冊。您運行myWatch()時,theWatchFunction內的所有內容都將永不再運行。您可以註冊一個新的觀察者,但不在theWatchFunction之內。

可以,例如,重新註冊的time觀察者的counter守望者:http://jsfiddle.net/bmleite/Lw3Lp/

0

你接近,你的jsfiddle不工作的原因是因爲在計數器7,你取消了手錶。由於重新開啓手錶的代碼位於WatchFunction中,因此不會調用該手錶,因爲手錶已被禁用,因此該功能不再執行。

我已經把計時器的檢查設置爲在超時功能中關閉手錶,並且它似乎正常工作。

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

我已經分叉fiddle演示一個工作版本,應該讓你的方式。希望有所幫助!