2015-04-30 12 views
6

Ho una raccolta Angolare associata a un ripetitore che viene popolato da un MVC JsonResult.Converti C# DateTime A Angular Date

$scope.loadData = function() { 
     $http.get('/Product/GetDiscountCodes') 
      .then(function (result) { 
       console.log(result); 
       $scope.discountCodes = result.data.DiscountCodes; 
       $scope.selected = {}; 
      }); 
    }; 

Uno dei campi nel ripetitore è popolato con la data. La data restituita dal server è C# DateTime che assomiglia a questo:

1/5/2015 12:02:00 AM

Tuttavia quando si è vincolato da angolare viene visualizzato come questo:

/Data (1420434120000)/

Come posso visualizzare correttamente la data nel mio campo di testo in formato mm/gg/aaaa?

Ho provato il formato della data di ui-utils ma non ha funzionato.

Ho anche provato a creare la mia direttiva che formatta correttamente la data ma quando si verifica l'evento di salvataggio, la data di invio al metodo lato server è tutta sollevata.

 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); 

Grazie per l'aiuto!

+0

Questo è un po 'un trucco che Microsoft utilizza per ottenere la data. Penso che lo facciano per aggirare le fastidiose correzioni UTC. Ma in ogni caso basta valutare la funzione Date() nella chiamata di servizio. Se non vuoi valutarlo, puoi usare estrarre il timestamp e usare momentjs. Il punto è modellare i dati nel servizio prima di restituirli a qualsiasi altro servizio o controller. –

+0

Io uso un filtro in questi casi. Questa [risposta] (http://stackoverflow.com/a/26898454/2030565) utilizza un filtro _moment.js_. Il mio utilizzo è il seguente: ' {{myDate | jsonDate: "MM-gg-aaaa"}} ' – Jasen

risposta

8
var app = angular.module('app',[]); 
app.filter('ctime', function(){ 

    return function(jsonDate){ 

    var date = new Date(parseInt(jsonDate.substr(6))); 
    return date; 
    }; 

}); 
app.controller('fCtrl', function($scope){ 

    $scope.date = '/Date(1420875802707)/'; 

}); 
+3

Cura da elaborare? –

+0

come usiamo questo filtro? usando | ctime? Non ha funzionato per me. Potresti per favore elaborare? – Kurkula

-1

utilizzando codice copione: $filter('date')($scope.Your_DateTime_Model, 'MM/dd/yyyy')

utilizzando la vista Codice: <input class="form-control" type="text" data-ng-model="Your_DateTime_Model | date:'MM/dd/yyyy'" />

7

utilizzare il {sampledate.slice (6, -2) | data: "gg/mm/aaaa"}