2017-04-21 2 views
1

J'utilise AngularJS 1,6 avec-ui-bootstrap angulaire 2.5.0 (bootstrap-ui-tpl.min.js)angulaire + Bootstrap + Datepicker = ne fonctionne pas

Le chargement de la page, la valeur de modèle (dateOfBirth) n'est pas pré-rempli dans la zone de texte du sélecteur de date. Il semble, beaucoup ont rapporté des problèmes similaires pour différentes versions de angular/bootstrap mais rien ne semble fonctionner.

HTML:

<input type="text" class="form-control" uib-datepicker-popup="{{format}}" ng-model="dateOfBirth" datepicker-options="dateOptions"/> 
    <span class="input-group-btn"> 
    <button type="button" class="btn btn-default" ng-click="openDobDatePicker()"><i class="glyphicon glyphicon-calendar"></i></button> 
    </span> 

Javascript:

$scope.format = 'dd/MM/yyyy' 

$scope.dateOfBirth = '05/12/2004' 

$scope.dateOptions = { 
    maxDate: new Date(), 
    startingDay: 1, 
    showWeeks: false 
} 

Edit: Il semble angulaire fournit uibDateParser pour analyser la chaîne pour objet Date. Cependant, ce qui suit échoue silencieusement:

$scope.dateOfBirth = $uibDateParser.parse('05/12/2004', 'dd/MM/yyyy') 

Répondre

1

Cela ne se peuplé parce que c'est une chaîne et non un Date valide. Ainsi, si vous le changez comme,

$scope.dateOfBirth = new Date("05/12/2004"); 

.. cela fonctionnerait! En outre, notez que new Date(..) viendra avec le fuseau horaire local ainsi au cas où vous voulez changer le fuseau horaire ou n'importe quoi concernant la manipulation des dates, momentjs est une grande bibliothèque pour manipuler ceux.

EDIT: Si le format est dd/MM/yyyy, vous pouvez peut-être faire quelque chose comme ça pour convertir en date valide:

var parts ='05/12/2004'.split('/'); 
$scope.dateOfBirth = new Date(parts[2],parts[1]-1,parts[0])); 
+0

Je viens d'essayer comme vous le suggérez. Au lieu de peupler 05/12/2004, il est peuplé 12/05/2004 dans la zone de texte. Aussi, est-il possible de lier automatiquement la date dans textformat au datePicker? –

+0

@saravana_pc impossible de lier textformat comme date AFAIK. pour le premier, mis à jour la réponse. – tanmay