Javascript ng更改未针对每个ng模型初始化触发

Javascript ng更改未针对每个ng模型初始化触发,javascript,angularjs,angular-ngmodel,angularjs-ng-change,Javascript,Angularjs,Angular Ngmodel,Angularjs Ng Change,我对ng change和ng model如何“协同工作”的理解是,对于一个包含N个元素的数组,如果我在视图中将当前索引绑定到ng模型的集合中使用ng repeat,然后将ng change函数绑定到每个元素,然后在视图初始化时,ng change功能将至少启动N次。事实证明我错了,在这里我想了解一下原因 一些代码需要进一步解释: $scope.quiz = { sections: [ { questions: [

我对ng change和ng model如何“协同工作”的理解是,对于一个包含N个元素的数组,如果我在视图中将当前索引绑定到ng模型的集合中使用ng repeat,然后将ng change函数绑定到每个元素,然后在视图初始化时,ng change功能将至少启动N次。事实证明我错了,在这里我想了解一下原因

一些代码需要进一步解释:

 $scope.quiz = {

      sections: [
          {
              questions: [
                   {
                       value: 0,
                       title: "Question 1"
                   }
              ]
          },
          {
              questions: [
                   {
                       value: 0,
                       title: "Question 1"
                   },
                   {
                       value: 0,
                       title: "Question 2"
                   }
              ]
          }
      ]
 };
我有一个数据集,有点类似于我上面发布的内容,在我看来,我正在使用ng repeat为每个部分中的每个问题生成输入元素;大致如下:

<!-- Loop through each section -->
<div ng-repeat="section in quiz.sections">

    <!-- Loop through each question -->
    <input type="number" ng-repeat="question in section.questions" ng-model="question.value" ng-change="change()"/>

</div>
问题是count 当然,如果我做了一些不合逻辑的事情,比如:

   if(count >= MAX / 2) {
        //This gets triggered
   }
但我自然不会依赖‘魔法’:)

问题:

如果我有一个由30个元素组成的数组,并且ng在其上重复分配ng模型和ng更改值,我希望在加载页面(即控制器)时ng更改至少被触发30次,这似乎不是真的,有人能解释为什么吗


我的理解是,初始化ng模型值应该触发更改事件,如果在上面的示例中加载页面时ng更改的执行次数少于30次,则不会发生这种情况

“非常感谢”这句话作为最后一行不应该在IMO中删除-当发布这样一个长问题时,我认为向那些通读了所有这些文字的人表示“非常感谢”是唯一正确的为快速编辑干杯,尽管lol。你真正的问题是什么?你花了时间发表评论,感谢人们通读课文,但问题正文中没有实际问题;除此之外,你的整个问题体讨论了你期望
ng change
如何工作,但你没有列出任何
ng change
的HTML。除此之外,你对
ng change
的理解似乎有缺陷
ng change
监视输入值的更改,而不是输入的呈现,如果
ng repeat
正在更改属性值,则您会遇到比
ng change
更严重的问题。此外,根据
ng change
的文档,“只有当输入值的更改导致新值提交到模型时,才会计算ngChange表达式。不会对其进行评估:•如果模型以编程方式更改,而不是通过更改输入值进行更改”
   if(count >= MAX / 2) {
        //This gets triggered
   }