Perte des actions d'un scope
Bonjour,
je développe une application en AngularJS et j'ai le souci suivant:
1) Lorsque j'accède à une page avec un controller pour la première fois, en cliquant sur un bouton, j'ouvre une popup dans laquelle j'ai des boutons et l'initialisation d'une grid (ui grid). Jusqu'ici tout marche bien. Toutes les actions définies dans le scope marche bien.
2) Lorsque je passe à une autre page (avec un autre controller), puis lorsque je reviens à la première page, j'arrive toujours à ouvrir ma popup et ma grid s'affiche bien, mais plus aucune action (sur bouton) ne marche, comme si j'avais perdu le scope. Les choses semble marcher un court instant puisque un radio boutton de ma première ligne de grid est sélectionnée comme prévu, puis elle est désélectionnée après un très court instant.
Je ne peux malheureusement pas faire une demo sur plunker car c'est une application professionnelle qui prendrait beaucoup de temps à reproduire et de plus je n'ai pas les droits de le faire.
Ma popup est définie dans ma page html
Code:
1 2 3 4 5 6
| <div id="modalChangeActors" dialog
url="app/components/views/dialogPopUp/capacityfilesearch/blockADetails/modal-changeActors.html"
dialogid="modalChangeActors"
width="{{changeActorsPopUpWidth}}"
height="{{changeActorsPopUpHeight}}">
</div> |
J'ai une directive dialog
Code:
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
| dcrApp.directive('dialog', function($filter) {
return {
restrict : 'A',
templateUrl : function(elem, attr) {
return attr.url;
},
link : function(scope, element, attrs) {
var dialogID = attrs.dialogid;
var computedHeight = attrs.height;
var computedWidth = attrs.width;
var dialog = angular.element(dialog = $("#" + dialogID).dialog({
autoOpen : false,
height : computedHeight ? computedHeight : 200,
width : computedWidth ? computedWidth : 550,
modal : true
}));
scope[dialogID] = dialog;
scope.$watch('gridChangeActorsHeight', function(newValue, oldValue) {
var dialogID = attrs.dialogid;
if (dialogID == 'modalChangeActors') {
var computedHeight = attrs.height;
var computedWidth = attrs.width;
scope.changeActorsPopUpHeight += parseFloat(newValue) - parseFloat(oldValue)
var dialog = angular.element(dialog = $("#" + dialogID).dialog({
autoOpen : false,
height : computedHeight ? scope.changeActorsPopUpHeight : 200,
width : computedWidth ? computedWidth : 550,
modal : true
}));
scope[dialogID] = dialog;
}
});
} |
Je l'actionne de la manière suivante
Code:
1 2 3 4
| $scope.modalChangeActors.dialog('option',
'title', $filter('translate')(
$scope.changeActorTitle));
$scope.modalChangeActors.dialog("open"); |
Merci d'avance pour vos réponses