2012-10-11 15 views
7

Jestem nowicjuszem w angularjs Próbuję powiązać właściwość date z danymi wejściowymi (tekstem), ale nie wiem jak sformatować datę.Jak AngularJS Data od json

mój obiekt JSON kontroler:

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

mój widok:

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

jako skutek, pojawia się napis "/ data (1325376000000) /" na moim polu tekstowym.

Jak mogę sformatować tę datę?

Odpowiedz

3

Co trzeba zrobić, to spojrzeć na http://docs.angularjs.org/api/ng.filter:date który jest filtrem, który jest dostępny w kanciasty domyślnie.

Wygląda na to, że przekazujesz dodatkowe rzeczy z datą. Zobacz scenariusz tutaj. (/ Data (*) /). Z wyjątkiem rzeczy w * wszystko inne nie jest konieczne, aby przeanalizować datę, a domyślny filtr kątowy nie będzie w stanie go przetworzyć. Albo usuń te dodatkowe elementy z modelu, albo alternatywnie, możesz napisać własny filtr, aby usunąć je z wejścia.

EDIT:

Wystarczy popatrzeć na http://docs.angularjs.org/api/ng.directive:ngModel.NgModelController (i przykład, który jest zdefiniowany tam!). Jeśli zamierzasz użyć tego w wielu miejscach, sugeruję, abyś zrobił to w metodzie opisanej przez ngModelController. Utwórz nową dyrektywę i implementuj $ render i $ setViewValue na ngModel.

Jeśli chcesz to zrobić w jednym miejscu, alternatywnym rozwiązaniem byłoby zdefiniowanie nowego modelu dla danych wejściowych. Coś jak

$scope.dateModel = ""; 

i używać go

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

W kontrolerze, trzeba będzie zrobić coś takiego:

$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" definiuje dwukierunkową wiążącego , nie chcę stracić wiązania. po tym przykładzie o to stracić! –

+1

Czy istnieje sposób zdefiniowania formatu na modelu ng? –

+0

@FlavioOliveira Spójrz na zmienioną odpowiedź. – ganaraj