Visualizza non ottenere il nuovo valore
-
20-12-2019 - |
Domanda
Ho questo servizio per mantenere aggiornato lo stato dell'app.
'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;
};
// ####################################
});
.
Nel mio controllore principale ho questo:
$scope.openRightMenu = function(menu){
Status.setActiveOptionRightMenu(menu);
$scope.menu = Status.get().menu;
};
$scope.menu = Status.get().menu;
.
Quando il caricamento del controller nel primo momento ottiene il valore predefinito destro:
$scope.menu = Status.get().menu;
.
Nel primo momento mi aspetto ActiveOption: 'Datax' ed è giusto.Ma dopo l'evento clicca nella visualizzazione Chiamata OpenrightMenu La vista non aggiorna il nuovo valore.Se metto un punto di interruzione all'interno del SetactiveOptionrightMenu posso vedere il nuovo valore impostato, ma dopo questo sembra che la vista ignora il nuovo valore e continua a utilizzare il vecchio.
Soluzione
Nella funzione Ottieni stai sovrascrivendo this.appStatus
:
// Status
this.get = function(){
this.appStatus = {
menu:{
right:{
activeOption: 'datax'
},
left:{
}
},
section:{
selectedSection: null
}
};
return this.appStatus;
};
.
Questo sarà sempre restituisce questo oggetto di questo.AppStatus con l'ActiveOPTzione definita come 'Datax'.Dovresti definirlo con i suoi valori predefiniti al di fuori della funzione Ottieni o controllare se è nullo.
// Status
this.appStatus = {
menu:{
right:{
activeOption: 'datax'
},
left:{
}
},
section:{
selectedSection: null
}
};
this.get = function(){
return this.appStatus;
}
.