J'essaie de convertir le plugin jQuery en directive. Voici la bibliothèque: Github .
Dans la documentation, il existe une option:
$(document).ready(function() { $("#datepicker").datepicker(); $("#datepickerbtn").click(function(event) { event.preventDefault(); $("#datepicker").focus(); }) });
Directive que j'ai créée:
app.directive('dateP', function(){ return{ restrict:'A', require:'ngModel', link:function(scope, element, attr, ngModel){ $(element).datepicker(scope.$eval(attr.dateP)); console.log('hey'); ngModel.$setViewValue(scope); } } });
Mais cela ne fonctionne pas, toute aide serait appréciée.
Plunker .
J'ai lu ceci: https://amitgharat.wordpress.com/2013/02/03/-approach-to-use-jquery-plugins-with-angularjs/
Fondamentalement, vous avez écrit ng-mode
au lieu de ng-model
and directive, vous devez définir les options de sélection de date et non la scope.$eval(attr.dateP)
qui est totalement erroné. À l'intérieur de la date, vous devez fournir leurs options au format json
comme ici, nous avons mentionné l'option en tant que { format: 'dd/mm/yyyy' })
HTML
<input date-p id="datepicker1" class="input-small" type="text" ng-model="dt">
Directif
app.directive('dateP', function() { return { restrict: 'A', require: 'ngModel', link: function(scope, element, attr, ngModel) { element.datepicker({ format: 'dd/mm/yyyy' }); } } });
Mettre à jour
Pour afficher datepicker
sur le bouton, vous devez ajouter une méthode ci-dessous à l'intérieur de votre contrôleur.
Manette
$scope.showDatepicker = function(){ angular.element('#datepicker1btn').datepicker('show'); };
Travailler Plunkr
Merci.