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.

Foi útil?

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;
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top