【发布时间】:2015-07-09 13:46:26
【问题描述】:
我有一个 Angular 集合绑定到从 MVC JsonResult 填充的转发器。
$scope.loadData = function () {
$http.get('/Product/GetDiscountCodes')
.then(function (result) {
console.log(result);
$scope.discountCodes = result.data.DiscountCodes;
$scope.selected = {};
});
};
转发器中的一个字段填充了日期。从服务器返回的日期是 C# DateTime,如下所示:
2015 年 1 月 5 日上午 12:02:00
但是,当它被 Angular 绑定时,显示如下:
/日期(1420434120000)/
如何让日期以 mm/dd/yyyy 格式正确显示在我的文本字段中?
我尝试了 ui-utils 日期格式,但不起作用。
我还尝试创建自己的指令来正确格式化日期,但是当保存事件发生时,发送到服务器端方法的日期全部被顶起。
function inputDate() {
return {
require: 'ngModel',
link: function (scope, element, attrs, ngModelController) {
ngModelController.$parsers.push(function (data) {
if (data === null) { return null; }
var d = moment(data).format('YYYY-MM-DD');
return d;
});
ngModelController.$formatters.push(function (data) {
if (data === null) { return null; }
return moment(data).format('MM/DD/YYYY');
});
}
}
}
angular.module('discountApp')
.directive('inputDate', inputDate);
感谢您的帮助!
【问题讨论】:
-
这有点像微软用来获取日期的技巧。我认为他们这样做是为了解决烦人的 UTC 偏移量。但无论如何,只需在您的服务调用中评估 Date() 函数。如果您不想评估它,您可以使用提取时间戳并使用 momentjs。重点是在将数据返回给任何其他服务或控制器之前在服务中塑造该数据。
-
我在这些情况下使用过滤器。这个 answer 使用 moment.js 过滤器。我的用法如下:
<span>{{myDate | jsonDate: "MM-dd-yyyy"}}</span>
标签: c# angularjs date datetime