Passando parametros para Controller com ng-init

Me deparei com uma situação no mínimo inusitada, nunca precisei passar um valor para o controller montar uma chamada no ajax ao entrar diretamente na página até hoje!

A solução para isso é fácil:

<div ng-controller="controller" ng-init="x = x">

Onde X é o nome da variável e o outro X é o valor.

Fica a documentação para quem for mais curioso: https://docs.angularjs.org/api/ng/directive/ngInit

Ionic sem cache na página

Hoje passei por um pequeno problema com o Ionic Framework, estou atualizando  um novo antigo e  toda vida que eu acessava a página ele não realizava o ng-init , logo me lembrei do esquema de cache.

Essa dica é interesante, pois temos 2 formas de remover o cache da página:

1) Direto na view

<ion-nav-view name="other" cache-view="false"></ion-nav-view>

2) Na rota

$stateProvider.state('other', {
   cache: false,
   url : '/other',
   templateUrl : 'templates/other/other.html'
})

Qualquer uma das duas, vai fazer seu controller ser chamado sempre.

Espero que tenha ajudado!

Auto reload Node.js Server

Dica rápida.

Hoje eu estava precisando usar um servidor Node.js mas toda vez que alterava o arquivo eu tinha que parar o servidor e startar novamente.

Solução muito util chamada Nodemon.io ele fica escutando o arquivo e verifica se tem alteração, para o server e starta novamente. Muito simples e rápido…

Mais fácil que isso é usar e instalar!

Instalando:

npm install -g nodemon

Usando:

nodemon app.js

AngularJS: quando usar Service e Factory

Duvida que ocorre muito entre os iniciantes em AngularJS, foi uma pergunta de um colega meu hoje, ele me pergunta  “Qual a diferença entre Service e Factory”. Analisando código é mais simples do que explicar com palavras 🙂

function factory(name, factoryFn) {
  return provider(name, { $get: factoryFn });
}

function service(name, constructor) {
  return factory(name, ['$injector', function($injector) {
    return $injector.instantiate(constructor);
  }]);
}

A cima vemos um exemplo de factory e outro de service. Uma service simplesmente retorna uma factory, teoricamente eles são iguais. A diferença está no $injector.instantiate que cria uma nova instância de service.

Ou seja, qualquer um que você escolher servirá. Geralmente, nós usamos as factories para funções “class-like”, pois nelas você adiciona propriedades e atributos e pode retornar um objeto para um controller.

Observe:

app.factory('Person', function(){
  return {
    name: "Mayron",
    sayHello: function(text){
      return "Hello!!!";
    }
  }
});

Já os services utilizamos quando queremos que a funções tenham um retorno:

app.service('personService', function($http){
  this.getPersonInfo = function(personId){
    return $http.get("/Person/", { params: {PersonId: personId });
  };
});

Podemos ver a documentação neste link, para ter acesso a mais explicações para quem quer entender melhor.

Qualquer dúvida, sugestão ou crítica, pode mandar que estamos aqui para responder.