如何在角度表达括号内引用动态变量?

时间:2015-05-15 18:57:17

标签: javascript angularjs

对于这个答案,我看起来很高很低,但没有直接解决这个问题。问题是这个 - 我有一个函数可以从端点获取日历列表。我有另一个函数来计算每个日历的事件数。每次在ng-repeat列表中调用它时,我都会创建一个动态变量,将日历ID附加到单词“count”作为变量名称。

function getEventsCount(calendarId) {
  if(calendarId !== '') {
    calendarService.getCalendarEvents(calendarId, fromDate, toDate).then(function (result) {
      if(isSuccessResponse(result)) {
        $scope['count' + calendarId] = result.events.length;
      } else {
        $scope.errorMessage = errorText + result.errorMessage;
      }
    });
  }
}

在HTML中我想显示每个日历的事件的数字计数,但由于我们正在遍历一个ng-repeat列表,它将返回任何给定数量的日历ID,我不知道变量名称是什么对于count将是,所以我需要angular以某种方式解析那些大括号内的变量名称。

<ul class="list-group">
  <li class="list-group-item" data-ng-repeat="calendar in calendarList.calendars" data-ng-init="getEventsCount(calendar.id)">
    <a roll="button" class="btn-link" data-ng-click="showCalendar(calendar.id, calendar.summary)">{{calendar.summary}} ({{count + calendar.id}})</a>
  </li>
</ul>

请原谅我,如果这个问题很混乱,我很乐意在必要时澄清。

1 个答案:

答案 0 :(得分:1)

如何将计数放在范围内的对象上,用他们的id键入?然后,您可以使用id:

索引表达式中的对象
$scope.counts = {};
function getEventsCount(calendarId) {
  if(calendarId !== '') {
    calendarService.getCalendarEvents(calendarId, fromDate, toDate).then(function (result) {
      if(isSuccessResponse(result)) {
        $scope.counts[calendarId] = result.events.length;
      } else {
        $scope.errorMessage = errorText + result.errorMessage;
      }
    });
  }
}

模板:

<ul class="list-group">
  <li class="list-group-item" data-ng-repeat="calendar in calendarList.calendars" data-ng-init="getEventsCount(calendar.id)">
    <a roll="button" class="btn-link" data-ng-click="showCalendar(calendar.id, calendar.summary)">{{calendar.summary}} ({{counts[calendar.id]}})</a>
  </li>
</ul>