jQuery ui datepicker avec Angularjs
Je veux utiliser jQuery UI datepicker avec AngularJS.
J'ai un échantillon , mais mon code ne fonctionne pas.
Exemple:
http://www.abequar.net/jquery-ui-datepicker-with-angularjs/
Mon Code:
<input id="sDate" name="programStartDate" type="text" datepicker required/>
angular.module('elnApp')
.directive('datepicker', function () {
return {
restrict: 'A',
require : 'ngModel',
link : function (scope, element, attrs, ngModelCtrl) {
$(function(){
element.datepicker({
dateFormat:'yy-mm-dd',
onSelect:function (date) {
ngModelCtrl.$setViewValue(date);
scope.$apply();
}
});
});
}
} });
Il affiche une erreur TypeError: Object [object Object] has no method 'datepicker'
.
- essayez
$(element).datepicker()
- ok, merci pour votre aide, mais je veux savoir pourquoi? pourriez-vous me dire ce qui est " différent sur les deux?
element
peut-être qu'une jQLite wrapper, pas entièrement fonctionnelle de l'objet jQuery.- J'ai eu le même problème et @madhead 's solution résolu. Merci
- Assurez-vous que vous êtes, y compris jQuery avant Angulaire. Il va choisir qui et l'utilisation de la réelle bibliothèque jQuery plutôt que jQLite. Voir la documentation sur angulaire.l'élément.
- Si vous êtes dynamiques à l'aide de l'id, voir ce post: stackoverflow.com/questions/19733723/...
- Voulez-vous s'il vous plaît enseignez-moi pourquoi nous pouvons liaison la "datepicker()" la fonction de l'élément de l'objet? J'ai un problème avec angular-ui et jquery, tous les deux ont datepicker fonction, bien sûr, avec le rendu de l'INTERFACE utilisateur, nous pouvons savoir où l'on est en invoquant, mais je veux comprendre en profondeur ce sujet. Merci!
Vous devez vous connecter pour publier un commentaire.
J'ai presque exactement le même code que vous et le mien fonctionne.
Avez-vous des jQueryUI.js inclus dans la page?
Il y a un violon ici
Vous aurez également besoin de la ng-app="app" quelque part dans votre code HTML
Comme une meilleure pratique, surtout si vous avez plusieurs sélecteurs de date, vous ne devriez pas coder en dur l'élément du champ nom de la variable.
Au lieu de cela, vous devriez obtenir l'cliqué sur entrée
ng-model
et mise à jour de ses correspondants de la portée de la variable à l'intérieur de laonSelect
méthode.MODIFIER
À résoudre le problème que @Romain ressuscité (Éléments Imbriqués), j'ai modifié ma réponse
ng-model
est imbriqué dans l'attribut. Par exempleng-model="delivery.date"
sera mise à jour du"delivery.date"
propriété de la portée, de la place de la"date"
propriété de$scope.delivery
.J'ai finalement été en mesure d'exécuter datepicker directive en angular js , ici, sont des pointeurs
comprennent les suivantes JS afin
J'ai ajouté ce qui suit
dans le code html
dans le js , assurez-vous de code pour la première directive et après que ajouter le code pour la manette , sinon, il va causer des problèmes.
sélecteur de date directive :
code de la directive visée de réponses ci-dessus.
Après cette directive , écrire le contrôleur
ESSAYEZ PLUTÔT CECI en angular js
avec jquery.js et jquery-ui.js
nous pouvons mettre en œuvre angular js datepicker
Cela donne le construit dans le datepicker et la date est fixée en ng-model et peuvent être utilisées pour le traitement et la validation.
Trouvé cet après beaucoup de succès headbanging avec l'approche précédente. 🙂
J'ai modifié le code et enveloppé vue de mettre à jour à l'intérieur de $apply().
}
de travail violon http://jsfiddle.net/hsfid/SrDV2/1/embedded/result/
onSelect ne fonctionne pas bien dans ng-repeat, j'ai donc fait une autre version à l'aide de l'événement lier
html
script
Malheureusement, vicont la réponse n'a pas de travail pour moi, j'ai donc cherché une autre solution qui est aussi élégant et fonctionne pour imbriquée attributs dans le ng-model. Il utilise $parse et accède à la ng-modèle à travers la attrs dans la fonction de liaison au lieu de l'exiger:
Source: ANGULAR.JS LA LIAISON À L'INTERFACE UTILISATEUR DE JQUERY (DATEPICKER EXEMPLE)
Vous principal Index.html fichier Angulaire pouvez utiliser la balise body de la ng-view. Ensuite, tout ce que vous devez faire est d'inclure une balise de script en bas de quelle que soit la page est tirée dans Index.html par Angulaire de la sorte:
Pourquoi compliquer les choses??
Voici mon code-
Code HTML :
J'ai eu le même problème et il a été résolu en mettant les références et comprend dans l'ordre:
JS:
HTML:
Je pense que vous êtes absent de l'Angulaire de l'ui bootstrap de la dépendance dans votre déclaration de module, comme ceci:
Voir le doc pour Angular-ui-bootstrap.