我正在尝试使用以下数据创建动态HTML表:
myApp.controller('MyCtrl', function($scope) {
$scope.data = [{
id: 201,
text: "Some Text",
date: new Date("October 13, 2014 11:13:00")
}, {
id: 202,
text: "Other Text",
date: new Date("October 13, 2014 11:13:00")
}];
});
HTML:
<div ng-controller="MyCtrl">
<table>
<tr>
<th>ID</th>
<th>Text</th>
<th>Date</th>
</tr>
<tr ng-repeat="items in data">
<td ng-repeat="item in items">{{item}}</td>
</tr>
</table>
</div>
但是我希望每次内部ng-repeat遇到日期类型时都应用日期过滤器,但是当它遇到任何其他类型(如字符串)时则不应用。我检查了一些已经可用的解决方案,但无法在这种情况下应用它们。
答案 0 :(得分:2)
应用date
过滤器是最简单的解决方案。正如您在documentation中所看到的,它只会适用于日期:
返回 串
如果输入未被识别为日期/毫秒,则格式化字符串或输入。
所以这是有效的:
<td ng-repeat="item in items">{{item | date}}</td>
即使item
不是日期。
请参阅updated fiddle。
<强>更新强>
由于你也有数值,我认为在代码中必须有一些不太通用的东西,以检查当前字段是否应该被视为日期。
请考虑以下事项:
<td ng-repeat="(key, item) in items">{{isDate(key) ? (item | date) : item}}</td>
控制器代码:
$scope.isDate = function(key) {
if (key === 'date') {//add more conditions if necessary
return true;
}
return false;
}