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??

Voice mon code:
UserCtrl:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
          };


UserDelCtrl:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
//del.js
angular.module('extranetApp')
        .controller('UserDelCtrl', function ($uibModalInstance, $scope, user, $rootScope) {
          var $ctrl = this;
          $scope.user = user;
          $ctrl.delInfo = { };
 
          $scope.delUser = function (delInfo) {
            console.log($scope.delInfo);
            console.log(delInfo);
          }
 
          $ctrl.ok = function () {
            $uibModalInstance.close($scope.newStatus);
          };
 
          $ctrl.cancel = function () {
            $uibModalInstance.dismiss('cancel');
          };
        });


Template:
Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
<!DOCTYPE html>
<!-- del.html -->
<!DOCTYPE html>
<div class="modal-header">
  <button type="button" class="close" ng-click="$ctrl.cancel()" data-dismiss="modal" aria-hidden="true">×</button>
  <h3 class="modal-title" id="modal-title">Supprimer l'utilisateur</h3>
</div>
 
<form ng-submit="delUser(delInfo)" name="delInfoForm" role='form' class="delUserForm" novalidate>
  <div class="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 -->
        <div class="row col-md-12">
          <!-- conserver la boite mail -->
          <div class="formCheckboxElm form-item">
            <!-- checkbox -->
            <label class="radioLabel">
              <input type="radio" ng-value="true" name="keepMailBox" ng-model="delInfo.mailbox.keepMailBox">
              <span class="margin-l-5">Conserver la boite aux lettre active</span>
            </label>
            <!-- temps -->
            <span ng-if="delInfo.mailbox.keepMailBox">
              pendant <input type="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"-->
          <div class="form-group col-md-12">
            <!-- message automatique -->
            <div class="formCheckboxElm form-item">
              <!-- activé message automatique -->
              <label class="radioLabel">
                <input type="checkbox" name="autoAnswer" ng-if="delInfo.mailbox.keepMailBox" ng-model="delInfo.mailbox.autoAnswer">
                <span class="margin-l-5">Mettre en place une réponse automatique</span>
              </label>
 
              <!-- textarea message automatique -->
              <textarea class="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>
 
 
 
 
 
        <div class="row col-md-12">
          <!-- ne pas conserver boite mail active  ng-if="!delInfo.mailbox.keepMailBox"-->
          <div class="formCheckboxElm form-item">
            <!-- checkbox -->
            <label class="radioLabel">
              <input type="radio" ng-value="false" name="keepMailBox" ng-model="delInfo.mailbox.keepMailBox">
              <span class="margin-l-5">Ne pas conserver la boite aux lettre active</span>
            </label>
          </div>
 
          <div class="form-group col-md-12">
            <div class="formCheckboxElm form-item">
              <label class="radioLabel">
                <!--<input type="checkbox" name ="archive" ng-if="!delInfo.mailbox.keepMailBox" ng-model="delInfo.mailbox.archive">-->
                <input type="checkbox" ng-disable="delInfo.mailbox.keepMailBox===true" ng-if="!delInfo.mailbox.keepMailBox" ng-model="delInfo.mailbox.archive">
                <span class="margin-l-5">Faut-il archiver son contenu</span>
              </label>
            </div>
          </div>
        </div>
      </fieldset>
 
    </div>
 
    <h4 ng-show="userSend">utilisateur supprimer</h4>
 
  </div>
  <div class="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