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.

È stato utile?

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;
}
.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top