Patrón apropiado

Alexander A. Ramírez M.

Partiendo el tutorial anterior vamos a hacer una modificación para dar la idea de un uso más apropiado de los controladores e introducir el concepto de servicios.

Ingrese a play.ionic.io para obtener el código para iniciar el tutorial y haga FORK. No olvide hacer FORK.

El objetivo es crear un servicio que provea los datos y que este servicio sea utilizado en el controlador.

En el JS defina el servicio que va a exponer los datos a través de un método getData.

.service('dataService', function() {
  return {
    data: [
      {id:"1"},
      {id:"2"},
      {id:"3"},
      {id:"4"},
      {id:"5"},
      {id:"6"},
      {id:"7"},
      {id:"8"},
      {id:"9"},
      {id:"10"}
    ],
    getData: function() {
      return this.data;
    }
  }
})

Borre la definición de $scope.items del controlador. Debe quedar como sigue:

.controller('contentController', function($scope){
  
});

Para poder utilizar el servicio en el controlador se debe inyectar el servicio de la forma siguiente:

.controller('contentController', function($scope, dataService){
  
});

Ahora utilice el servicio y obtenga los datos mediante el método getData del servicio dataService y asígnelo a $scope.items.

.controller('contentController', function($scope, dataService){
  $scope.items = dataService.getData();
})

Este corto ejercicio tiene el objetivo de hacer énfasis en que el controlador debe proveer los datos y el comportamiento a la vista. En el controlador se debe evitar obtener datos directamente y para ello el patrón es crear servicios que sean consumidos por el controlador y se aisla el proceso de obtención de los datos.

En general la mejor opción para obtener datos y transformarlos al formato o estructura que requiera el controlador es crear servicios. Fíjese que el código en el controlador queda bastante resumido.

Puede verificar el resultado final si lo desea.