7

Nel mio progetto Angular sto provando a utilizzare le direttive Angular per il bootstrap datepicker, ma non viene visualizzato.Direttiva angolare Datepicker per Bootstrap non visualizzata

ho collegato a <script src="bower_components/angular-bootstrap/ui-bootstrap.js"></script> e <script src="bower_components/angular-bootstrap/ui-bootstrap-tpls.js"></script> nel mio index.html e nel mio app.js ho messo ui.bootstrap come una dipendenza.

angular 
    .module('myApp', ['ui.bootstrap']) 

C'è qualcosa di ovvio che mi manca?

Sto cercando di utilizzare uib-datepicker-popup all'interno di un ng-switch all'interno di un ng-repeat, ma non vedo perché questo causerebbe alcun problema:

<div class="form-group" ng-repeat="field in vm.fields"> 
    <label for="{{ field.propertyName }}"> 
     <h5><span translate="{{ field.translate }}"></span> 
      <span class="form-control-required" ng-show="{{field.required}}">*</span> 
     </h5> 
    </label> 
    <div ng-switch="field.type" ng-class="{ 'input-group': field.type === 'date' }"> 
     <select ng-switch-when="gender" 
       name="{{ field.propertyName }}" id="{{ field.propertyName }}" 
       ng-model="vm.model[field.propertyName]" class="form-control" 
       ng-required="{{ field.required }}"> 
      <option value="m">Male</option> 
      <option value="f">Female</option> 
     </select> 
     <textarea ng-switch-when="textarea" 
        name="{{ field.propertyName }}" id="{{ field.propertyName }}" 
        class="form-control" ng-model="vm.model[field.propertyName]" 
        ng-required="{{ field.required }}"></textarea> 
     <input ng-switch-when="date" 
       type="date" uib-datepicker-popup="dd/MM/yyyy" 
       show-weeks="false" is-open="vm.datePickerOpen" 
       name="{{ field.propertyName }}" id="{{ field.propertyName }}" 
       class="form-control pull-left" ng-model="vm.model[field.propertyName]" 
       ng-required="{{ field.required }}"> 
     <span class="input-group-btn btn-" ng-if="field.type === 'date'"> 
      <button type="button" class="btn btn-primary" 
        ng-click="vm.openDatePicker($event)"> 
       <i class="glyphicon glyphicon-calendar"></i> 
      </button> 
     </span> 
     <input ng-switch-default="" 
       type="{{ field.type }}" name="{{ field.propertyName }}" id="{{ field.propertyName }}" 
       class="form-control pull-left" ng-model="vm.model[field.propertyName]" 
       ng-required="{{ field.required }}"> 
    </div> 
</div> 

E nel mio controller:

vm.datePickerOpen = false; 

vm.openDatePicker = function($event) { 
    vm.datePickerOpen = true; 
}; 

risposta

16

Apperentemente la documentazione su https://angular-ui.github.io/bootstrap/#/datepicker è per una versione più recente. Modificando uib-datepicker-popup a datepicker-popup ha funzionato.

Inoltre ho dovuto cambiare <input type="date" datepicker-popup>-<input type="text" datepicker-popup> a causa di questo: Is there any way to change input type="date" format?

Si sta lavorando ora. La documentazione sulle direttive angolari per il bootstrap dovrebbe indicare da quale versione utilizzare uib-datepicker e dove datepicker è applicabile.

+2

Dopo un po 'di ricerche ho trovato questa guida alla migrazione e ora so che il prefisso cambia per aggiungere uib- è ** dalla versione 0.14.0 **: https://github.com/angular-ui/bootstrap/wiki/Migration- guida per prefissi – dhuyvetter

+0

Grazie per la tua domanda e risposta. Sono un po 'confuso da questo controllo. Per me funziona usando e non viceversa. Quale è incoerente con la documentazione ??? Finché funziona credo che sia la cosa principale! – CYoung

+0

@cyoung Controlla quale versione di UI Bootstrap stai usando. Il prefisso uib è stato introdotto inversione 0.14.0. Quindi probabilmente stai utilizzando una versione precedente. – dhuyvetter

0

Per quelle ricerche, ho avuto lo stesso problema, questo ha risolto il problema. Aggiunto AngularMoment to my module e iniettata "momento":

$scope.object.moment = moment(); 
$scope.object.date = $scope.object.moment.toDate(); 

poi:

<datepicker ng-model="object.date"></datepicker> 
2

avuto un problema simile. Dopo 2 ore di scavo e cercando, ho potuto farlo funzionare con un

<input type=text" uib-datepicker-popup="dd/MM/yyyy" ng-model="user.birthday" />

solo facendo i dati del modello di un oggetto data nel controllore

simili

//after we fetch the model (user) data make the needed field a Date object 
user.birthday = new Date(user.birthday);