2013-08-22 12 views
8

Bir dob sütunum var ve değerler yyyy-aa-gg biçiminde 2013-01-01 şeklinde geliyor ve bunu giriş kutusunda göstermem gerekiyor 1 Ocak. Bunu bir işlev yazarak ve daha sonra bu işlevin tam değerini döndürerek başarabilirim. Ancak, işlev, ng-bind kullanılarak, ng-bind kullanılarak açılabildiği giriş kutusundan açılabilir. Giriş kutusundaki işlev çağrısının iki yollu bağlamayı keseceğini anlayabilirim. Ama bunun için başka hangi yaklaşımı kullanabilirim.Ng-modeliyle işlevsel bağlanma (plnkr ile)

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

[$ formatters and $ parsers] 'ı (https://docs.angularjs.org/api/ng/type/ngModel.NgModelController#$parsers) kontrol edin. İsterseniz, bunları kullanarak bir cevap yazabilirim – aarosil

cevap

6

Sen işlevi tarafından döndürülen değer atamak için ng-init kullanmak ve bir model atayabilirsiniz:

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

DEMO

+2

Teşekkürler. Ama bu şekilde yapıyor, iki yönlü bağlama katılmıyor, eğer dob'da bazı değişiklikler yaparsam, bu girdi kutusuna yansıtılmayacaktır –

+0

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

+0

Yukarıdaki plnkr , Eğer ikinci giriş kutusunda değişiklik yaparsak, o zaman ilk giriş kutusuna değil, –

0

güncellenmiş değeri tutmak için değeri ve ng-değişim ayarlamak için ng-init kullanabilirsiniz. Umarım bu birisine yardım eder!