Показать сообщение отдельно
  #21 (permalink)  
Старый 30.05.2013, 19:25
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

Антипаттерн или способ убить scope

watch отслеживает изменения scope, и меняет одно из отслеживаемых значений затем сам же реагирует на своё изменение, тоесть уходит в бесконечный цикл. Создатели фреймворка глубину рекурсии искуственно ограничили 10ю вызовами, после 10 бросают исключение.

<!doctype html>
<html ng-app="myApp">
  <head>

	<style>	</style>

    <script src="http://code.angularjs.org/1.1.5/angular.min.js"></script>
    <script language="javascript" type="text/javascript">
  
      //Обьявим модуль
      var myApp=angular.module('myApp', []);

	  //создадим дерективу
      myApp.directive('test',function(){                        
        return {
			restrict:"E",
			scope:{},
			controller:function($scope){
				$scope.count=0;

				$scope.$watch ( function(){
					alert('реагирую на count=' +$scope.count);
					$scope.count++;
				});
			}
	   	}          
      });

    </script>
  </head>
  
  
  <body >    
    <test>count={{count}}</test>
  </body>   
</html>
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 30.05.2013 в 21:16.
Ответить с цитированием