2015-07-22 3 views
0

Я хочу прикрепить слушателя к моей переменной titleChanged. Я попробовал этот путь, но он бросает эту ошибкуКак подключить слушателя к переменной внутри моего контроллера angularjs?

TypeError:. Это $ часы не является функция

 var titleChanged = false; 

     function titleTrue() { 
      titleChanged = true; 
     }; 
     $scope.$watch('title',function(newValue, oldValue) { 
      if (newValue !== oldValue) { 
       $timeout(titleTrue(), 5000) 
      }; 
     }); 
     this.$watch('titleChanged', function(newValue){ 
      if(newValue === true) { 
        updateNote(); 
        titleChanged = false; 
       }; 
     }); 

обновленного код другого apprach

 var titleChanged = false; 

     $scope.$watch('title',function(newValue, oldValue) { 
      if (newValue !== oldValue) { 
       titleChanged = true; 
      } 
     }); 

     while (true) { 
      $timeout(checkForChangeAndSave, 3000); 
     }; 

     function checkForChangeAndSave() { 
      if(titleChanged) { 
       updateNote(); 
       titleChanged = false; 
      } 
     } 


     function updateNote() { 
      notesService.update($stateParams.id, {title: $scope.title}); 
      notesService.getAll(); 
     }; 
+0

Часы изменяют переменную на объекте $ scope. Структура - это «просмотр» переменной. Часы создаются с использованием функции $ scope. $ Watch(), которую я расскажу позже в этом тексте. – Oyeme

ответ

3

this, скорее всего, ссылок объект контроллера в вашем случае (если только вы не привязали вручную к другому значению (или вы установили this.$watch внутри другой области функций)). У этого метода нет $watch.

$scope имеет такой способ однако. Если вы хотите посмотреть значение локальной переменной, не подверженной действию, вы сделаете так:

$scope.$watch(function() { return titleChanged; }, function (v) { 
    console.log(v); 
}); 
+0

Я вижу. Я попробовал выше, но это не решило мою проблему. Затем я попробовал другой подход, используя цикл while. Но теперь выполнение застревает внутри цикла. Я обновил код – vinibol12

Смежные вопросы