Ver, não ficando o novo valor
-
20-12-2019 - |
Pergunta
Eu tenho esse serviço para manter o status do aplicativo atualizado.
'use strict';
angular.module('reportApp')
.service('Status', function Status() {
this.appStatus = {};
// Status
this.get = function(){
this.appStatus = {
menu:{
right:{
activeOption: 'datax'
},
left:{
}
},
section:{
selectedSection: null
}
};
return this.appStatus;
};
this.setActiveOptionRightMenu = function(menu){
this.appStatus.menu.right.activeOption = menu.id;
};
this.setActiveSection = function(section){
this.appStatus.section.selectedSection = section;
};
// ####################################
});
No meu controlador principal de eu ter isso:
$scope.openRightMenu = function(menu){
Status.setActiveOptionRightMenu(menu);
$scope.menu = Status.get().menu;
};
$scope.menu = Status.get().menu;
Quando o controlador de carga em um primeiro momento ele obtém o valor predefinido:
$scope.menu = Status.get().menu;
No primeiro momento eu estou esperando activeOption:'dadosx' e ele está certo.Mas após o evento, clique na vista de chamada openRightMenu a vista não atualizar o novo valor.Se eu colocar um ponto de interrupção dentro setActiveOptionRightMenu Eu posso ver o novo valor a ser atribuido, mas depois que se parece com o modo de exibição ignorar o novo valor e manter a utilizar o antigo.
Solução
Na sua função get são de substituir this.appStatus
:
// Status
this.get = function(){
this.appStatus = {
menu:{
right:{
activeOption: 'datax'
},
left:{
}
},
section:{
selectedSection: null
}
};
return this.appStatus;
};
Isto irá sempre retorno este objeto deste.appStatus com o activeOption definido como 'dadosx'.Você deve defini-lo com seus padrões fora da função get, ou verificar para ver se ele é nulo.
// Status
this.appStatus = {
menu:{
right:{
activeOption: 'datax'
},
left:{
}
},
section:{
selectedSection: null
}
};
this.get = function(){
return this.appStatus;
}