Ostatnio spotkałem się z dziwnym przypadkiem.
Kod jest całościowy, więc można skopiować i przetestować na swoim (potrzebny jest jeszcze plik angular.js)
<!DOCTYPE html> <html lang="pl"> <head> <meta charset="utf8" /> </head> <body> <div ng-app="app"> <div ng-controller="WatchCtrl"> <table> <tr> <th> </th> <td> <input id="firstName" ng-model="firstName" /> </td> </tr> <tr> <td colspan="2"> </td> </tr> </table> </div> </div> <script type="text/javascript"> var module = angular.module('app', []); module.controller('WatchCtrl', function($scope) { $scope.firstName = ''; $scope.stop = true; $scope.$watch('firstName', function(newValue, oldValue) { if(!$scope.stop) { console.log('works!'); } }); $scope.fire = function() { $scope.stop = true; $scope.firstName = 'change'; $scope.stop = false; }; }); </script> </body> </html>
Zastanawia mnie jak po odpaleniu fire wywali mi konsole works! jak przecież przy zmianie scopa na change mam nałożoną blokadę w postaci zmiennej stop. !?