angularjs - ng-if 带有数组键和函数的结果

angularjs - ng-if with array key and result from function

我正在尝试在转发器中使用 ng-if。这是我正在尝试做的事情:

<li ng-repeat="timers in current.Timer | groupBy: 'day' | toArray:true | orderBy: '$key'" class="details-single-day" ng-click="editView('/edit')" ng-if="timers.$key==isToday()">
   <span class="details-day-name">Day: {{timers.$key}}</span>
   <bars timer="timers" day="timers.$key" title="Week"></bars>
</li>

isToday() 函数 returns 今天作为 int:

$scope.isToday = () ->
  return new Date().getDay()

基本上,如果 $key(从 0 到 6)等于 isToday() 结果,我想显示我的值。

如果没有 ng-if,我可以看到日常的所有详细信息,包括 {{timer.day}} as int。

但是对于 ng-if,什么也不会显示。

任何帮助将不胜感激。谢谢

您似乎不能在同一元素上使用 ng-repeatng-if。 我放了一个 fiddle 供您查看:http://jsfiddle.net/bh83jc4b/2/

我建议使用普通 javascript(如 fiddle)或自定义过滤器来过滤您的数组。

 $scope.filtered = $scope.current.Timer.filter(function (timers) {
      return timers.$key === $scope.isToday();
 });

<li ng-repeat="timers in filtered | groupBy: 'day' | toArray:true | orderBy: '$key'" class="details-single-day" ng-click="editView('/edit')">
   <span class="details-day-name">Day: {{timers.$key}}</span>
   <bars timer="timers" day="timers.$key" title="Week"></bars>
</li>

我终于解决了这个问题,真的很简单。

而不是做:

<li ng-repeat="timers in current.Timer | groupBy: 'day' | toArray:true | orderBy: '$key'" class="details-single-day" ng-click="editView('/edit')" ng-if="timers.$key==isToday()">
   <span class="details-day-name">Day: {{timers.$key}}</span>
   <bars timer="timers" day="timers.$key" title="Week"></bars>
</li>

使用函数 (isToday),我改为这样做:

<li ng-repeat="timers in current.Timer | groupBy: 'day' | toArray:true | orderBy: '$key'" class="details-single-day" ng-click="editView('/edit')" ng-if="timers.$key == today">
   <span class="details-day-name">Day: {{timers.$key}}</span>
   <bars timer="timers" day="timers.$key" title="Week"></bars>
</li>

今天不再是函数:

$scope.today = new Date().getDay()

现在可以完美运行了。感谢大家的帮助