Pergunta

Eu tenho um aplicativo simples usando Angular UI Router com alguns estados.

Na verdade eu tenho esse tipo de código no meu roteador:

$stateProvider.state('map.layers', {
    url: '/layers',
    templateUrl: 'views/layers.html',
    controller: 'LayersCtrl',
    onEnter: function(map: Master.Map) {
      // do stuff
    },

    onExit: function(map: Master.Map) {
      // do stuff
    }
  });

O controlador está definido em outro arquivo e estou procurando uma boa maneira de definir os retornos de chamada onEnter e onExit no mesmo arquivo.

Na sua opinião, qual é a melhor solução?Uma variável global deveria funcionar, mas não é muito bonita.

Foi útil?

Solução

Você pode fazer isso, mas sem saber mais isso é um cheiro de código.Você está misturando lógica entre controladores e estados, mas eles devem ser separados.

De qualquer forma, veja como você pode fazer isso:

No seu controlador, injete o $state objeto e usar o $state.get método:

.controller('layersCtrl', function($state) {
  $state.get('map.layers').onEnter = blah;
  $state.get('map.layers').onExit = blahblah;
});

Mas, em vez disso, recomendo que você extraia essa funcionalidade compartilhada para um serviço.Se você está achando difícil fazer isso, eu daria uma olhada profunda em seu código porque parece haver muito acoplamento entre os módulos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top