Comment usemultiple Angulaire UI Bootstrap Datepicker dans le formulaire unique?

J'ai un formulaire où il y a un besoin pour moi d'avoir 2 ou plusieurs champs de date pour différentes choses. J'ai essayé de l'Angulaire de l'INTERFACE utilisateur de Bootstrap qui fonctionne très bien lorsque j'ai seulement 1 date de champ dans le formulaire. Mais il s'arrête de fonctionner si j'ai plusieurs champs de date et je ne sais pas la méthode la plus simple pour obtenir que cela fonctionne.

C'est mon exemple de code HTML:

 <label>First Date</label>  
    <div class="input-group">
     <input type="text" class="form-control" datepicker-popup="{{format}}" name="dt" ng-model="formData.dt" is-open="opened" datepicker-options="dateOptions" ng-required="true" close-text="Close" />
      <span class="input-group-btn">
        <button class="btn btn-default" ng-click="open($event)"><i class="glyphicon glyphicon-calendar"></i></button>
      </span>
    </div>      

 <label>Second Date</label>  
    <div class="input-group">
     <input type="text" class="form-control" datepicker-popup="{{format}}" name="dtSecond" ng-model="formData.dtSecond" is-open="opened" datepicker-options="dateOptions" ng-required="true" close-text="Close" />
      <span class="input-group-btn">
        <button class="btn btn-default" ng-click="open($event)"><i class="glyphicon glyphicon-calendar"></i></button>
      </span>
    </div>     

Mon JS est:

myApp.controller('DatePickrCntrl', function ($scope) {

      $scope.today = function() {
        $scope.formData.dt = new Date();
      };
      $scope.today();

      $scope.showWeeks = true;
      $scope.toggleWeeks = function () {
        $scope.showWeeks = ! $scope.showWeeks;
      };

      $scope.clear = function () {
        $scope.dt = null;
      };

      //Disable weekend selection
      $scope.disabled = function(date, mode) {
        return ( mode === 'day' && ( date.getDay() === 0 || date.getDay() === 6 ) );
      };

      $scope.toggleMin = function() {
        $scope.minDate = ( $scope.minDate ) ? null : new Date();
      };
      $scope.toggleMin();

      $scope.open = function($event) {
        $event.preventDefault();
        $event.stopPropagation();

        $scope.opened = true;
      };

      $scope.dateOptions = {
        'year-format': "'yy'",
        'starting-day': 1
      };

      $scope.formats = ['dd-MMMM-yyyy', 'yyyy/MM/dd', 'shortDate'];
      $scope.format = $scope.formats[0];

});

Je implémentée sur la base de l'échantillon ici. Le problème que j'ai ici est:

1) Lorsque la date de champ est cliqué, la fenêtre pop-up datepicker est foiré et semble montrer 2 datepicker en 1.

2) Lorsque je supprime is-open="opened" attribut, la fenêtre pop-up semble bien fonctionner. Mais sans is-open="opened", le ng-click="open($event) pour le bouton ne marche pas.

3), chacun de la date des champs de différents ng-modèles, je suis incapable de le définir par défaut les dates pour tous les champs de date, sauf pour le premier une ng-model="formData.dt"

Le seul moyen de résoudre ce que je peux penser à est de séparer le contrôleur pour chaque champ de date.

Je voudrais savoir comment d'autres personnes de mettre en œuvre plusieurs champs de date dans 1 formulaire lui-même lors de l'utilisation Angulaire UI Bootstrap.

  • D'une façon qui pourrait les rendre plus faciles à gérer est de faire une directive pour votre sélecteur de date et de transmettre vos modèles en deux instances de ceux-ci. Il va s'occuper de la portée de votre "ouvrir" de la fonction sans l'ouverture des deux sélecteur de date calendriers à la fois.
InformationsquelleAutor Neel | 2014-03-08