如何在修改对象后调用ng-repeat中的函数?

时间:2016-12-12 15:30:29

标签: angularjs

我有下一个代码部分:

<ul class="list-group" ng-init="curMarks=getTaskVotesModalInfo(task)">
  <li ng-repeat="info in curMarks" class="list-group-item">
    <span>{{info.worker}}</span>
    <span class="badge">{{info.mark}}</span>
  </li>
</ul>

一切都很好。但是当任务更新时 - getTaskVotesModalInfo()不会重新计算数据。 task是$scope.Tasks数组的一部分。

我该如何解决?

Upd:getTaskVotesModalInfo函数

$scope.getTaskVotesModalInfo = function(task) {
   var taskId = task.id;
   var result = {};
   angular.forEach($scope.ScrumWorkers, function(value) {
       var curWorkerId = value.value;
       if (curWorkerId == 0) {
          return;
       }
       result[curWorkerId] = {
           mark : 'not voted',
           worker : 'not set'
       };
       result[curWorkerId].mark = $scope.TasksVotes[taskId][curWorkerId];
       result[curWorkerId].worker = value.text;
       return result;
  }

1 个答案:

答案 0 :(得分:1)

问题是'ng-init'只执行一次。

您可以直接在ng-repeat中使用'getTaskVotesModalInfo(task)'函数,而不是在ng-init中启动curMarks。然后angular将处理更新。

<li ng-repeat="info in getTaskVotesModalInfo(task)">

以下是一个示例:Plunker

更优化的示例,其中'curMarks'列表仅在任务更改后更新:Optimized Plunker