2012-10-11 18 views
7

Sono un novizio in angularjs sto cercando di associare una proprietà data a un input (testo) ma non so come formattare la data.Come AngularJS Data da json

mia JSON oggetto controler:

$scope.datasource = {"prop1":"string data", "myDateProp":"\/Date(1325376000000)\/"} 

mio punto di vista:

<input type="text" ng-model="datasource.myDateProp" /> 

come risultato, ho la stringa "/ Data (1.325.376 milioni) /" sulla mia casella di testo.

Come posso formattare questa data?

risposta

3

Quello che dovete fare è dare un'occhiata a http://docs.angularjs.org/api/ng.filter:date che è un filtro che è disponibile in angolare di default.

Sembra che tu stia passando cose aggiuntive con la data. Vedi lo scenario qui. (/ Data (*) /). Ad eccezione di quanto riportato in *, per la data e il filtro angolare predefinito non è necessario eseguire altre operazioni di analisi. Spoglia queste cose aggiuntive dal modello o, in alternativa, puoi scrivere il tuo filtro per eliminarle in input.

EDIT:

Dai un'occhiata alla http://docs.angularjs.org/api/ng.directive:ngModel.NgModelController (e l'esempio che viene definito lì!). Se intendi riutilizzare questo in più punti, ti suggerisco di farlo nel metodo descritto da ngModelController. Crea una nuova direttiva e implementa $ rendering e $ setViewValue su ngModel.

Se si desidera eseguire questa operazione in un unico punto, un altro sarebbe definire un nuovo modello per l'input. Qualcosa di simile

$scope.dateModel = ""; 

e usarlo

<input type="text" ng-model="dateModel" ng-change="onDateChange()"/> 

Nel vostro controller, si dovrà fare qualcosa di simile:

$scope.$watch("datasource.myDateProp",function(newValue){ 

    if(newValue){ 
     convert(newValue); 
    } 
}); 

function convert(val){ 
    //convert the value and assign it to $scope.dateModel; 
} 


$scope.onDateChange = function(){ 
// convert dateModel back to the original format and store in datasource.myDateProp. 
} 
+0

ng-model = "datasource.myDateProp" definisce un bidirezionale vincolante , non voglio perdere la rilegatura. seguendo questo esempio o perderlo! –

+1

c'è un modo per definire un formato su ng-model? –

+0

@FlavioOliveira Dai un'occhiata alla risposta modificata. – ganaraj