Angular-UI plusieurs datepickers initié forme contrôleur
Je suis entrain de créer un formulaire avec plusieurs angular-ui datepickers et des données d'entrée.
Pour le datepickers j'ai créé un contrôleur et un formulaire parent contrôleur comme l'exemple donné ci-dessous. La forme contrôleur a le modèle qui comprend le datepicker dates.
JS:
var app = angular.module('app', ['ui.bootstrap']);
app.controller('dateCntrl', function($scope,$timeout){
$scope.open = function() {
$timeout(function() {
$scope.opened = true;
});
};
});
app.controller('formCntrl', function($scope, $http){
$scope.model = {name:'', startDate:'', endDate:''};
});
HTML:
<form ng-controller="formCntrl">
<input type="text" id="name" placeholder="Name" ng-model="model.name" />
<div ng-controller="dateCntrl">
<input datepicker-popup="dd-MMMM-yyyy" ng-model="model.startDate" id="startDate" type="text" />
<button class="btn" ng-click="open()"><i class="icon-calendar"></i></button>
</div>
<div ng-controller="dateCntrl">
<input datepicker-popup="dd-MMMM-yyyy" ng-model="model.endDate" id="endDate" type="text" />
<button class="btn" ng-click="open()"><i class="icon-calendar"></i></button>
</div>
</form>
- Suis-je dans la bonne voie en ayant un contrôleur pour le datepicker. Ceci agira comme un contrôleur commun pour l'ensemble de la date d'entrées
- Si oui, est-il possible d'avoir un moyen générique de liaison de données dans le datepicker contrôleur vers le modèle des dates(de modèle.startDate,modèle.date de fin dans ce cas) dans le contrôleur de parent.
- Est là une autre façon d'aller à ce sujet.
Merci et salutations.
OriginalL'auteur guru | 2013-08-16
Vous devez vous connecter pour publier un commentaire.
Devrait avoir lu plus au sujet de la la portée de l'héritage
Le parent valeurs de portée peut être consulté à l'aide de $parent
OriginalL'auteur guru
J'ai pris tout le code de l'exemple détaillé ici: http://angular-ui.github.io/bootstrap/#/datepicker & enveloppé dans ma propre directive. De cette façon, je peux tomber juste illimité datepickers dans ma page, et de préciser le modèle pour chacun de se lier à. Je n'ai pas à gérer le passage répétitif des paramètres, ou la mise en place des variables uniques pour le suivi de l "ouvrir" le statut de plus, je viens de mettre 1 ligne de code:
L'utilisateur peut ensuite activer chaque sélecteur de date d'ouverture/de fermeture, et les valeurs seront mises à jour dans
myDate1
,myDate2
, &myDate3
de façon appropriée. Le statut ouvert/fermé est encapsulée à l'intérieur de la directive, et de l'esprit.Pour mettre en œuvre la directive, j'ai copié le 'JS' onglet du code du contrôleur, et j'ai copié le "Balisage" tab " du code du modèle. À la fin, j'ai ajouté 1 bit de code pour mettre à jour la valeur de la portée parent:
Au début de la manette, j'ai changé de $champ d'application.aujourd'hui, pour initialiser la valeur de la portée parent, au lieu d'utiliser l'horloge système:
La directive utilise un isolat portée, et 2 voies de liaison sur l'attribut qui définit la portée parent du modèle:
Voici le code complet de la directive:
Et voici le code complet de
datepicker.html
, le modèle de cette directive:OriginalL'auteur Josh Ribakoff
autre solution , déclarer le datepicker de la méthode open() de $rootScope et il est disponible toute l'application .
Html :
Javascript :
jsfiddle lien http://jsfiddle.net/angles_k/s7yZm/21/
OriginalL'auteur AKA