我在表格中有多个字段,我只是使用ng-repeat显示,但是需要格式化它们,是否有某种方法可以将过滤器从范围传递给html? 下面的代码不起作用:
<tr ng-repeat="info in array">
<td>{{info.key}}</td>
<td class="table-detail-panels">{{ info.value | info.filter }}</td>
</tr>
aslo不知道我是否应该传递字符串或过滤器对象
info.filter = 'date' // or
info.filter = $filter('date')
EDIT1:info.filter
是一个变量,它可以有不同的过滤器,而不仅仅是'date'
。
EDIT2:值得一提的是ng-repeat
在我正在建立的指令/控制中。此控件的目的是能够以合理的方式显示此世界中存在的所有内容,这就是我需要过滤器的原因。或者将它们添加到controll的简单方法。
解答: 浏览片刻后,我在堆栈上找到答案: https://stackoverflow.com/questions/21491747/apply-formatting-filter-dynamically-in-a-ng-repeat
答案 0 :(得分:1)
根据我的理解,您希望根据某些条件以不同方式过滤数组中的值。如果是这样,我建议您使用控制器内的过滤器,然后重复格式化预格式化。如果需要,可以使用ng-bind-HTML和ngsanitize:
module.controller('MyCtrl', ['$scope', 'customFilter1', 'customFilter2',
function ($scope, custom1, custom2) {
// however you are creating your array - do the logic here
if(something) {
$scope.variable = custom1(arg)
} else {
$scope.variable = custom2(arg)
}
}
])
**这是一般性的想法,显然它不会完全像上面所写的那样工作。我经常使用相同的想法,当我不能100%确定将传递什么数据并且想要格式化字符串时,数字会有所不同。
答案 1 :(得分:0)
Angular已经内置了。只需使用:
<td class="table-details-panels">{{info.value | date: 'dd-MM-yyy'}}</td>
如果您只想过滤一些td
:
<td ng-if="needsToBeFilteredCondition" class="table-details-panels">{{info.value | date: 'dd-MM-yyyy'}}</td>
<td ng-if="!needsToBeFilteredCondition" class="table-details-panels">{{info.value}}</td>