AngularJS : formulaire uibModal - binding scope sur checkbox
Bonjour!
(tout le code sont présent plus bas)
J’essaie de créer un formulaire qui s'affiche dans une modal avec uibModal. Cette modal est lancer par UserCtrl (grâce à un bouton) et elle est est gérée par UserDelCtrl.
Le formulaire est composé de 2 parties:
1) garder la boite mail activer
|-> divers input pour cette option EX : réponse automatique (true/false) gérer par une checkbox
2) ne pas la garder activer
|-> divers input pour cette option EX: archiver le contenu (true/false) gérer par une checkbox
L'utilisateur ne doit pouvoir choisir qu'une des deux, j'ai gérer ça avec des boutons radio, cette partie marche, les input "optionnelle" sont affichés en fonction du bouton radio coché.
Le problème c'est que si on choisit "ne pas la garder activer", puis qu'on coche "Faut-il archiver son contenu", puis qu'on choisis "Conserver la boite aux lettre active" SANS DÉCOCHER "Faut-il archiver son contenu", ma variable archivage reste a true, alors qu'elle devrait être a false (voir supprimer par le ng-if??)
J'ai essayer en mettant un ng-disable si "garder la boite mail activer", la checkbox est bien disable mais le problème est le même...
Une âme charitable?? :D
Voice mon code: UserCtrl:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
//user.js$scope.userDel = function($event, user){$uibModal.open({animation: true,
ariaLabelledBy: 'modal-title',
ariaDescribedBy: 'modal-body',
templateUrl: 'views/modal/user/del.html',
controller: 'UserDelCtrl',
controllerAs: '$ctrl',
scope: $scope,
size: 'md',
resolve: {user: user
}});
$event.stopPropagation(); //Empeche le ng-click du rowTemplate de s'activer};
<!DOCTYPE html><!-- del.html --><!DOCTYPE html><divclass="modal-header"><buttontype="button"class="close" ng-click="$ctrl.cancel()" data-dismiss="modal" aria-hidden="true">×</button><h3class="modal-title"id="modal-title">Supprimer l'utilisateur</h3></div><form ng-submit="delUser(delInfo)"name="delInfoForm"role='form'class="delUserForm" novalidate><divclass="modal-body row"id="modal-body"><div ng-show="!userSend"class="col-md-12"><!-- Boite mail --><fieldset><legend>Boite aux lettre</legend><!-- conservation boite mail --><divclass="row col-md-12"><!-- conserver la boite mail --><divclass="formCheckboxElm form-item"><!-- checkbox --><labelclass="radioLabel"><inputtype="radio" ng-value="true"name="keepMailBox" ng-model="delInfo.mailbox.keepMailBox"><spanclass="margin-l-5">Conserver la boite aux lettre active</span></label><!-- temps --><span ng-if="delInfo.mailbox.keepMailBox">
pendant <inputtype="number"name="activeDuration"value="0" ng-model="delInfo.mailbox.activeDuration"> jours
</span></div><!-- option de conservation de la boite mail active ng-if="delInfo.mailbox.keepMailBox"--><divclass="form-group col-md-12"><!-- message automatique --><divclass="formCheckboxElm form-item"><!-- activé message automatique --><labelclass="radioLabel"><inputtype="checkbox"name="autoAnswer" ng-if="delInfo.mailbox.keepMailBox" ng-model="delInfo.mailbox.autoAnswer"><spanclass="margin-l-5">Mettre en place une réponse automatique</span></label><!-- textarea message automatique --><textareaclass="form-control"rows="5" ng-if="delInfo.mailbox.autoAnswer" ng-model="delInfo.mailbox.autoMessage"name="autoMessage"placeholder="{{'USER.AUTO_ANSWER_TEXT' | translate }}"></textarea></div></div></div><divclass="row col-md-12"><!-- ne pas conserver boite mail active ng-if="!delInfo.mailbox.keepMailBox"--><divclass="formCheckboxElm form-item"><!-- checkbox --><labelclass="radioLabel"><inputtype="radio" ng-value="false"name="keepMailBox" ng-model="delInfo.mailbox.keepMailBox"><spanclass="margin-l-5">Ne pas conserver la boite aux lettre active</span></label></div><divclass="form-group col-md-12"><divclass="formCheckboxElm form-item"><labelclass="radioLabel"><!--<input type="checkbox" name ="archive" ng-if="!delInfo.mailbox.keepMailBox" ng-model="delInfo.mailbox.archive">--><inputtype="checkbox" ng-disable="delInfo.mailbox.keepMailBox===true" ng-if="!delInfo.mailbox.keepMailBox" ng-model="delInfo.mailbox.archive"><spanclass="margin-l-5">Faut-il archiver son contenu</span></label></div></div></div></fieldset></div><h4 ng-show="userSend">utilisateur supprimer</h4></div><divclass="modal-footer"><button ng-show="!userSend"type='submit'class="btn btn-success pull-right">Envoyer</button><button ng-show="userSend"class="btn btn-primary"type="button" ng-click="$ctrl.ok()">OK</button></div></form>
gérée par le controller UserDelCtrl, et lancer par le controller