【发布时间】:2014-12-17 00:12:27
【问题描述】:
我正在尝试使用过滤器来过滤掉作为字符串的日期。我从 API 获得的日期是
"/Date(1418716652000+0000)/"
我有一个函数可以将日期转换为我想要的类型:
1418716652000
函数是:
$scope.convertDate = function(published_first) {
var date = (published_first.match(/\(.*\)/, ''));
var convertedDate = date[0];
date = eval(convertedDate.replace(/\//g,''));
return date;
}
我的 HTML 是:
<div id ="news" ng-repeat="new in news | filter:convertDate">
<h3 class="title" ng-repeat="n in new">
<span>{{n.title}}</span><br/>
<div class="title-data">
<span ng-if="n.byline.length > 0">by: {{n.byline}}</span>
<br/>
<span>
<span>published: {{n.published_first | date:'medium'}}</span><br/>
</span>
</div>
我一直试图在我的 ng-repeat div 中的 HTML 中将其作为过滤器运行,但它不起作用。我还尝试在包含 angular date:'medium' 过滤器的同一跨度中运行过滤器。那也行不通。有人可以帮我解决我所缺少的吗?
【问题讨论】:
-
您需要创建一个过滤器。将函数绑定到作用域是不够的。
-
不要使用 eval。要将字符串转换为数字,请使用
+(convertedDate.replace(/\//g,''))或更语义化:Number(convertedDate.replace(/\//g,''))。 -
@RobG 我试过 Number(convertedDate.replace(/\//g,'')) ,但我得到: undefined NaN, NaN NaN:NaN:NaN
-
convertedDate.replace(/\//g,'')对您有什么价值? -
你应该可以使用
date = +published_first.match(/\d+/)[0]。
标签: javascript angularjs