Javascript 动作前触发模型更新angularjs

Javascript 动作前触发模型更新angularjs,javascript,angularjs,Javascript,Angularjs,这里是安格拉斯的新手。我本来是在为自己做一个简单的概念验证,但后来被困在了我认为不会被困的地方 基本上,我有一个目标清单。它们的布局使每个对应于模型上由complete属性绑定的复选框。如果用户勾选了其中一个目标,我希望通过迭代目标并找到已完成(勾选)的目标来更新总进度 每个复选框触发一个事件来执行此操作: <ul> <li ng-repeat="objective in objectives"> <input type="checkbox" ng-mo

这里是安格拉斯的新手。我本来是在为自己做一个简单的概念验证,但后来被困在了我认为不会被困的地方

基本上,我有一个目标清单。它们的布局使每个对应于模型上由
complete
属性绑定的复选框。如果用户勾选了其中一个目标,我希望通过迭代目标并找到已完成(勾选)的目标来更新总进度

每个复选框触发一个事件来执行此操作:

<ul>
  <li ng-repeat="objective in objectives">
    <input type="checkbox" ng-model="objective.complete" ng-click="updateProgress()">
    {{ objective.task }}
  </li>
</ul>

有几种方法可以做到这一点。如Sunil建议的,ng变更:

  <li ng-repeat="objective in objectives">
    <input type="checkbox" ng-change="updateProgress()" ng-model="objective.complete"  >
    {{ objective.task }} 
  </li>

我认为使用ng change更容易,也更便宜。

你可以尝试使用
ng change=“updateProgress()”
而不是
ng click=“updateProgress()”
。对于其他来此线程的人,这里有另一篇文章对同样的想法进行了解释:我尝试了$watch,但我觉得有一种更简单的方法。我不知道有什么变化。我得仔细看看这些文件。谢谢
  <li ng-repeat="objective in objectives">
    <input type="checkbox" ng-change="updateProgress()" ng-model="objective.complete"  >
    {{ objective.task }} 
  </li>
$scope.$watch('objectives', function(newVal) {
     $scope.updateProgress();
}, true);