2014-05-15 14 views
0

저는 AngularJs를 배우고 있지만 작동하지 않습니다. 다이제스트주기에 대해 읽었지 만 나에게는 명확하지 않습니다. 무한 루프를 입력하기 때문에이 코드가 실패하지만이 코드를 수정하는 방법을 모릅니다. 누군가 나를 도울 수 있습니까?

<!DOCTYPE html> 
<html lang="eng" ng-app="test"> 
<head> 
    <title>Learning Angular</title> 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.9/angular.js"></script> 
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.9/angular-route.js"></script> 
    <script type="text/javascript"> 
    var app = angular.module('test', ['ngRoute']); 

    app.factory('visitCounterService', function() { 
     var counterService = function() { 
     var _count = 1; 

     var counter = function() { return _count++; }; 

     return { counter: counter } 
     }(); 

     return counterService; 
    }); 

    app.service('homeModel', ['visitCounterService', function(visitCounterService){ 
     this.getTitle = function() { 
     var n = visitCounterService.counter(); 
     return "Welcome to this awesome demo. You are the visitor n° " + n; 
     }; 

    }]); 

    app.controller('homeController', ['$scope', 'homeModel', function($scope, homeModel) { 
     $scope.home = homeModel; 
    }]); 
    </script> 
</head> 
<body ng-controller="homeController"> 
    <h3>{{home.getTitle()}}</h3> 
</body> 
</html> 

감사합니다.

답변

5

각도는 home.getTitle() 표현식에서 암시적인 $ watch를 등록합니다. 이 표현식은 모델이 안정화되었는지를 각도가 확인하기를 원하기 때문에 최소한 두 번 호출됩니다.

home.getTitle() 코드가 호출 될 때마다 코드가 다른 문자열을 반환하므로 각도가 최대 다이제스트 사이클 한계에 도달 할 때까지 각도가 계속 소화됩니다.

시도 :

$scope.homeTitle = homeModel.getTitle(); 

<h3>{{homeTitle}}</h3> 
관련 문제