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-repeat
和 ng-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()
现在可以完美运行了。感谢大家的帮助
我正在尝试在转发器中使用 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-repeat
和 ng-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()
现在可以完美运行了。感谢大家的帮助