У меня есть Угловая коллекция, связанная с ретранслятором, который заполнен из MVC JsonResult.Convert C# DateTime To Angular Date
$scope.loadData = function() {
$http.get('/Product/GetDiscountCodes')
.then(function (result) {
console.log(result);
$scope.discountCodes = result.data.DiscountCodes;
$scope.selected = {};
});
};
Одно из полей в ретрансляторе заполнено датой. Дата возвращается от сервера C# DateTime, который выглядит следующим образом:
1/5/2015 12:02:00 AM
Однако, когда оно связано угловому это показывает, как это:
/Дата (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);
Спасибо за помощь!
Это что-то вроде взлома, который Microsoft использует для получения даты. Я думаю, что они делают это, чтобы обойти раздражающие смещения UTC. Но в любом случае просто оцените функцию Date() в вашем сервисном вызове. Если вы не хотите его оценивать, вы можете использовать выдержку timestamp и использовать momentjs. Точка формирует данные в службе, прежде чем возвращать их другим службам или контроллерам. –
В этих случаях я использую фильтр. Этот [ответ] (http://stackoverflow.com/a/26898454/2030565) использует фильтр _moment.js_. Мое использование выглядит так: ' {{myDate | jsonDate: «MM-dd-yyyy»}} ' – Jasen