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

时间:2016-03-21 09:32:07

标签: angularjs angular-ng-if

我试图在转发器中使用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()函数今天以int:

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

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

如果没有ng-if,我可以看到每天的所有细节,包括{{timer.day}}为int。

但是使用ng-if,什么都没有显示。

任何帮助都将非常感激。感谢

2 个答案:

答案 0 :(得分:0)

您似乎无法在同一元素上使用ng-repeatng-if。 我为你提供了一个小提琴:http://jsfiddle.net/bh83jc4b/2/

我建议使用普通的javascript(如小提琴)或自定义过滤器过滤你的数组。

 $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>

答案 1 :(得分:0)

我终于设法解决了这个问题,而且非常简单。

而不是:

<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()

现在它完美无缺。感谢大家的帮助