我正在使用angularJS将我的结果集显示到一个表中,该表可以用总数等过滤。我想知道如果它是=
的话,是否可以显示基于另一个值的值。这是一个例子:
<tr ng-repeat="c in data">
<td>{{c.type}}</td> //expects either 'fixed' or 'hourly'
<td>{{c.fixed_rate}}</td>
<td>{{c.hourly_rate}}</td>
</tr>
因此,如果类型是固定的,你只能显示固定值吗?如果类型是每小时而不使用任何JQuery来隐藏元素,那么你每小时只能显示一次吗? 我的思绪有点难以理解,因为我只有几个月的角度。
数据是从数据库中提取的*所以如果有一个SQL选项,我就全力以赴。
答案 0 :(得分:2)
你可以这样做:
<tr ng-repeat="c in data | filter: filterHourlyOrFixed">
<td>{{c.type}}</td>
<td ng-if="c.type == 'fixed'">{{c.fixed_rate}}</td>
<td ng-if="c.type == 'hourly'">{{c.hourly_rate}}</td>
</tr>
如果您只想过滤这两个值,请将此功能添加到控制器:
$scope.filterHourlyOrFixed = function (item) {
return item.type === 'fixed' || item.type === 'hourly';
};
如果您不想按值过滤,请从ng-repeat中删除| filter: filterHourlyOrFixed
。
此外,如果您有时间,请仔细阅读ngIf,ngShow,ngHide和ngFilter的文档。您可能正在使用这些重复。另外,请注意ng-if
,ng-show
和ng-hide
操纵DOM以获得类似结果的差异。
差异很微妙,但很重要。
答案 1 :(得分:1)
使用ng-if
根据表达式删除或重新创建DOM的部分内容。例如:
<tr ng-repeat="c in data">
<td>{{c.type}}</td> //expects either 'fixed' or 'hourly'
<td ng-if="c.type=='fixed'">{{c.fixed_rate}}</td>
<td ng-if="c.type=='hourly'">{{c.hourly_rate}}</td>
</tr>
如果要渲染相同的DOM但想要排除某些元素,也可以使用过滤器。
答案 2 :(得分:0)
您可以尝试这样的事情:
<tr ng-repeat="c in data">
<td ng-if="c.type =='fixed'">Fixed</td>
<td ng-if="c.type =='hourly'">Hourly</td>
<td ng-if="c.type =='fixed'">{{c.fixed_rate}}</td>
<td ng-if="c.type =='hourly'">{{c.hourly_rate}}</td>
</tr>
希望这有帮助!