【发布时间】:2014-06-14 03:49:39
【问题描述】:
我在服务中使用 $http.get 来获取 JSON 数据。返回的 JSON 中我的对象属性之一是 AngularJS 未解析的日期。我需要将此属性绑定到日期字段,我目前正在通过在获取 AJAX 数据后手动将 JSON 字符串转换为 javascript 日期来解决它,如下所示
app.service('MainService', function(){
var self = this;
self.jsonDate = null;
self.parsedDate = null;
// this function will get JSON data from an API in production
self.getData = function(){
var jsonData = "2014-06-13T16:00:00";
// Angular does not convert my JSON data properties into dates
self.jsonDate = jsonData;
// I can work around this by forcing my dates to be parsed
self.parsedDate = moment(jsonData).toDate();
}
});
有没有更清洁的方法来做到这一点?我构建了一个将字符串转换为日期的过滤器
app.filter('stringToDate', function () {
return function (input) {
if (!input)
return null;
var date = moment(input);
return date.isValid() ? date.toDate() : null;
};
});
如果我使用它,过滤器效果很好,如下所示
<span ng-bind="service.jsonDate | stringToDate | date:'MM/dd/yy'"></span>
但如果我尝试将它与 ng-model 一起使用,它就不起作用,如下所示
<input type="date" ng-model="service.jsonDate | stringToDate"/>
过滤器可以与 ng-model 一起使用,还是我需要坚持手动将属性转换为日期?我这里有一个 plunker 来演示我当前的代码
【问题讨论】:
-
使用自定义指令选项更新答案。