Angularjs 角度js-摘要循环

Angularjs 角度js-摘要循环,angularjs,angularjs-digest,Angularjs,Angularjs Digest,我可能正在试图澄清我对摘要循环的概念。我有一个小的HTML页面,如下所示: <!doctype html> <html> <head lang="en"> <meta charset="utf-8"/> <title>Practice</title> </head> <body ng-app="myApp"> &l

我可能正在试图澄清我对摘要循环的概念。我有一个小的HTML页面,如下所示:

<!doctype html>
<html>
    <head lang="en">
        <meta charset="utf-8"/>        
        <title>Practice</title>
    </head>
    <body ng-app="myApp">
        <div ng-controller="myController">
            Enter your text <br>
            <textarea rows="5" id="comments" ng-model="commentText"></textarea>
            <br>
            Type Char:{{ lenghtComment }}            
        </div>        
        <script src="https://code.angularjs.org/1.5.0-beta.2/angular.min.js" type="text/javascript"></script>
        <script src="prac.js" type="text/javascript"></script>
    </body>

</html>   

我想显示我在文本框中键入的字符数。虽然有很多方法可以做到这一点,但我想知道为什么上面的方法不起作用。范围变量“LenghtComment”依赖于“commentText”,因此摘要循环在用户输入时检测到“commentText”上的更改,然后应在观察者列表上重复,以确保是否有任何因变量已更改。在这次运行中,它应该在“lenghtComment”变量中找到更改并更新应用程序。但事实并非如此。但是,如果我使用注释中的函数,它的效果非常好。请指出我在理解上的差距。提前感谢你们。

除了代码中的输入错误,现在的编写方式不会起作用

Angular不会在每个
$digest
周期内持续重新运行控制器。相反,它创建监听器来监视变量的变化,并更新这些变量

然而,在这种情况下,
$scope.lengthComment
并不是每一个
$digest
周期都在改变。它可能看起来在变化,但实际上,
$scope.commentText.length
是一个返回整数的赋值(在本例中,
0
)。作业完成后,不会重新评估
lengthComment
在本例中是一个原语,它不依赖于
commentText


相反,另一种形式
$scope.lengthComment=function()
则在不断变化。本例中的变量未指定给函数的返回值,而是指定给函数本身。每个
$digest
,必须重新评估此函数,以确定其结果是否相同。

这是您的打字错误吗?在HTML中有
lenghtcoment
,但在JS文件中有正确的拼写
lenghtcoment
。这在你的代码中是错误的还是仅仅在你的问题体中?谢谢你的建议。这澄清了我的疑问。谢谢。另外,我也为拼写错误道歉。如果拼写错误发生,我只是想澄清一下,拼写错误并不是您试图解决的问题的原因。如果此答案充分回答了您的问题,请务必接受答案。:)
var myApp=angular.module("myApp",[]);
myApp.controller("myController",["$scope",function($scope){
    $scope.commentText="";
   /* $scope.lenghtComment=function(){
        return $scope.commentText.length;
    };*/

 $scope.lengthComment=$scope.commentText.length;

}]);