2013-08-22 6 views
8

Mam kolumnę dobraną i wartości są w tym jest w formacie rrrr-mm-dd powiedz 01.01.2013 i muszę pokazać go w polu wprowadzania jako 1 stycznia. Osiągam to, pisząc funkcję, a następnie zwracam dokładną wartość z tej funkcji. Jednak funkcja nie mogła zostać wywołana z pola wejściowego przy użyciu modelu ng, gdzie można go wywołać za pomocą funkcji ng-bind w zakresie. Rozumiem, że wywołanie funkcji w polu wejściowym przerwie wiązanie dwukierunkowe. Ale jakie inne podejście mogę dla tego użyć.Jak uzyskać funkcjonalne powiązanie z ng-model (z pnkr)

http://plnkr.co/edit/pZDpypsxM1OA2JwFhjjp?p=preview

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/angularjs/1.0.7/angular.min.js"></script> 
<script type="text/javascript" > 
    var app = angular.module('app', []); 
    app.controller('AppCtrl', function ($scope) { 
     $scope.dob = "2013-01-01"; 
     $scope.getDateOfBirth = function(dob){ 
      var months = ["Jan","Feb","Mar","Apr","May","June","July","Aug","Sep","Oct","Nov","Dec"] 
      var split = dob.split("-"); 
      return parseInt(split[2])+" "+months[parseInt(split[2])-1]; 
     } 
    }); 
</script> 

<span ng-app="app" ng-controller="AppCtrl" ng-bind="getDateOfBirth(dob)"></span> 

<input type="text" ng-model="getDateOfBirth(dob)"/> 
+0

Sprawdź w [$ formatters i $ parsers] (https://docs.angularjs.org/api/ng/type/ngModel.NgModelController#$parsers). Jeśli chcesz, mogę napisać odpowiedź używając ich. – aarosil

Odpowiedz

6

Można użyć NG-init przypisać wartość zwracaną przez funkcję i przypisać go do modelu

<input ng-init="myDOB = getDateOfBirth(dob);" type="text" ng-model="myDOB"> 

DEMO

+2

Dzięki. Ale robiąc w ten sposób, nie bierze udziału w dwukierunkowym powiązaniu, jeśli dokonam jakiejś zmiany w dob, nie zostanie ona odzwierciedlona w polu wejściowym –

+0

http://plnkr.co/edit/qntKlT7mAysnSRGWJ7ot?p=preview –

+0

W powyższym pnkr , Jeśli zrobimy zmiany w drugim polu wprowadzania, to będzie to odzwierciedlone w zakresie, ale nie w pierwszym polu wprowadzania –

0

Dla dat, numerów telefonów itp, można użyć UI-maski. Mam nadzieję, że to pomoże komuś!

Powiązane problemy