Angularjs 已达到$digest迭代次数。带有ng事件的简单示例

Angularjs 已达到$digest迭代次数。带有ng事件的简单示例,angularjs,Angularjs,此示例记录每个用户的单击次数。该复选框显示年龄/姓名。单击该复选框时,我希望更新计数器。单击年龄或姓名时,我还希望更新计数器 复选框ng click函数是$digest迭代出现问题的地方。如果我从这个函数中删除$scope.counter++,它就可以正常工作。app.js的第32行 我认为这是因为$scope.counter导致了一个新的摘要循环,该循环导致调用$scope.clicked函数,以此类推。然而,我想不出我应该怎样做才能增加它一次 您可以在这里找到示例: 我也会在这里发布代码

此示例记录每个用户的单击次数。该复选框显示年龄/姓名。单击该复选框时,我希望更新计数器。单击年龄或姓名时,我还希望更新计数器

复选框ng click函数是$digest迭代出现问题的地方。如果我从这个函数中删除$scope.counter++,它就可以正常工作。app.js的第32行

我认为这是因为$scope.counter导致了一个新的摘要循环,该循环导致调用$scope.clicked函数,以此类推。然而,我想不出我应该怎样做才能增加它一次

您可以在这里找到示例:

我也会在这里发布代码

  <p>Click Count: {{clickCount}}.</p>
    <table>
      <tbody>
        <tr>
          <td></td>
          <td>Name</td>
          <td>Age</td>
        </tr>
        <tr ng-repeat="row in testData">
          <td>
            <label class="checkbox">
              <input type="checkbox" ng-model="row.check" ng-checked="clicked(row)" />
            </label>
          </td>
          <td>
            <span ng-show="row.show" class="reason-show-hide" ng-click="nameClicked(row.name)">{{row.name}}</span>
          </td>
          <td>
            <span ng-show="row.show" class="reason-show-hide" ng-click="ageClicked(row.age)">{{row.age}}</span>
          </td>
        </tr>
      </tbody>
    </table>
那么

问题在第33行,您有:

<input type="checkbox" ng-model="row.check" ng-checked="clicked(row)" />
但我认为应该是这样

<input type="checkbox" ng-model="row.check" ng-click="clicked(row)" />
ng checked是checked属性的Angular指令,而不是用于设置/取消设置复选框的事件处理程序,因此它由循环中的Angular调用和计算

仅此一项更改即可生效:


非常感谢你。这开始是一个尝试动画的练习,但现在转到为什么要这样做。你的解释有道理。
<input type="checkbox" ng-model="row.check" ng-click="clicked(row)" />