首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无限$digest环

无限$digest环
EN

Stack Overflow用户
提问于 2014-05-15 17:12:15
回答 1查看 2.4K关注 0票数 0

我正在学习AngularJ,但我不能让它工作。我读过关于消化周期的文章,但对我来说还不清楚。很明显,这段代码失败是因为输入了一个无限循环,但我不知道如何修复它。有人能帮我吗?

代码语言:javascript
复制
<!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>

谢谢你的建议!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-15 18:02:39

在$watch表达式上注册隐式home.getTitle()。这个表达式至少会被调用两次,因为角想检查模型是否稳定。

每次调用home.getTitle()时,您的代码都会返回不同的字符串,因此角继续消化,直到达到最大摘要周期限制为止。

尝试:

代码语言:javascript
复制
$scope.homeTitle = homeModel.getTitle();

代码语言:javascript
复制
<h3>{{homeTitle}}</h3>
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23684711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档