new - AngularJS-convierte las fechas en el controlador
new date() angularjs (4)
Todas las soluciones aquí no vinculan realmente el modelo con la entrada porque tendrá que volver a cambiar la dateAsString
para guardarse como date
en su objeto (en el controlador después de que se dateAsString
el formulario).
Si no necesita el efecto vinculante, solo para mostrarlo en la entrada,
un simple podría ser:
<input type="date" value="{{ item.date | date: ''yyyy-MM-dd'' }}" id="item_date" />
Luego, si lo desea, en el controlador, puede guardar la fecha editada de esta manera:
$scope.item.date = new Date(document.getElementById(''item_date'').value).getTime();
tenga en cuenta: en su controlador, debe declarar su variable de item
como $scope.item
para que esto funcione.
¿Alguien podría sugerirme cómo convertir la fecha de este formato 1387843200000
a este 24/12/2013
dentro de mi controlador ?
Solo para tu información, mis fechas se almacenan de esta manera y cuando se vincula a la forma de edición con input type="date"
campo input type="date"
no se está rellenando.
EditCtrl
app.controller("EditCtrl", [ "$scope", "$filter", "db" function ($scope, $filter, db){
// this gets me an item object
var item = db.readItem();
// item date = 1387843200000
// this returns undefined
item.date = $filter(''date'')(date[ item.date, "dd/MM/yyyy"]);
}]);
Edit.html - plantilla
<form name="editForm" class="form-validate">
<div class="form-group">
<label for="date">Event date.</label>
<input type="date" class="form-control" ng-model="event.date" id="date" required />
</div>
<a href="#/" class="btn btn-danger ">Cancel</a>
<button id="addEvent" class="btn btn-primary pull-right" ng-disabled="isClean() || editForm.$invalid" ng-click="saveEvent()">Save event.</button>
</form>
crea un filter.js y puedes hacer esto como reutilizable
angular.module(''yourmodule'').filter(''date'', function($filter)
{
return function(input)
{
if(input == null){ return ""; }
var _date = $filter(''date'')(new Date(input), ''dd/MM/yyyy'');
return _date.toUpperCase();
};
});
ver
<span>{{ d.time | date }}</span>
o en el controlador
var filterdatetime = $filter(''date'')( yourdate );
sugiero en Javascript:
var item=1387843200000;
var date1=new Date(item);
y luego date1 es una Fecha.
item.date = $filter(''date'')(item.date, "dd/MM/yyyy"); // for conversion to string
http://docs.angularjs.org/api/ng.filter:date
Pero si usa HTML5 type = "date", entonces DEBE usarse el formato ISO aaaa-MM-dd.
item.dateAsString = $filter(''date'')(item.date, "yyyy-MM-dd"); // for type="date" binding
<input type="date" ng-model="item.dateAsString" value="{{ item.dateAsString }}" pattern="dd/MM/YYYY"/>
http://www.w3.org/TR/html-markup/input.date.html
NOTA: el uso de pattern = "" con type = "date" parece no estándar, pero parece funcionar de la manera esperada en Chrome 31.