unidades:03_servicios:10_ejemploseguro
Diferencias
Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
| unidades:03_servicios:10_ejemploseguro [2014/07/30 23:48] – [La clase del propio servicio] admin | unidades:03_servicios:10_ejemploseguro [2014/08/29 22:15] (actual) – admin | ||
|---|---|---|---|
| Línea 1: | Línea 1: | ||
| ====== 3.10 Ejemplo servicio ====== | ====== 3.10 Ejemplo servicio ====== | ||
| - | En este tema retornamos | + | En este tema retornamos el ejemplo del seguro médico para añadir un '' |
| - | Al ver el servicio '' | + | Al ver el servicio '' |
| - | El servicio será un objeto llamado '' | + | El servicio será un objeto llamado '' |
| ===== La configuración ===== | ===== La configuración ===== | ||
| - | Nuestro servicio va a ser un '' | + | Nuestro servicio va a ser un '' |
| <sxh js> | <sxh js> | ||
| Línea 14: | Línea 14: | ||
| </ | </ | ||
| - | La contante | + | La constante |
| El provider tendrá un único método para configurarlo llamado '' | El provider tendrá un único método para configurarlo llamado '' | ||
| Línea 23: | Línea 23: | ||
| </ | </ | ||
| - | Fijaté como el nombre del provider es " | + | Fíjate cómo el nombre del provider es " |
| ===== El provider ===== | ===== El provider ===== | ||
| Línea 42: | Línea 42: | ||
| * Línea 1: Definimos el constructor de la clase '' | * Línea 1: Definimos el constructor de la clase '' | ||
| - | * Línea 3: Un método público llamado '' | + | * Línea 3: Un método público llamado '' |
| - | * Línea 6: El método '' | + | * Línea 6: El método '' |
| - | * Línea 7: Ahora la función de factoría crea el nuevo objeto de la clase '' | + | * Línea 7: Ahora la función de factoría crea el nuevo objeto de la clase '' |
| * Línea 11: Finalmente se registra el '' | * Línea 11: Finalmente se registra el '' | ||
| Línea 71: | Línea 71: | ||
| * Línea 7: Si todo va bien y se han podido obtener los datos, se llama a la función de callback llamada '' | * Línea 7: Si todo va bien y se han podido obtener los datos, se llama a la función de callback llamada '' | ||
| * Línea 9: Si algo ha fallado, se llama a la función de callback llamada '' | * Línea 9: Si algo ha fallado, se llama a la función de callback llamada '' | ||
| + | |||
| + | ===== El controlador ===== | ||
| + | Por último nos queda ver cómo queda el controlador al usar el nuevo servicio. | ||
| + | |||
| + | <sxh js; | ||
| + | app.controller(" | ||
| + | $scope.seguro={ | ||
| + | nif:"", | ||
| + | nombre:"", | ||
| + | ape1:"", | ||
| + | edad: | ||
| + | sexo:"", | ||
| + | casado: | ||
| + | numHijos: | ||
| + | embarazada: | ||
| + | coberturas: { | ||
| + | oftalmologia: | ||
| + | dental: | ||
| + | fecundacionInVitro: | ||
| + | }, | ||
| + | enfermedades: | ||
| + | corazon: | ||
| + | estomacal: | ||
| + | rinyones: | ||
| + | alergia: | ||
| + | nombreAlergia:"" | ||
| + | }, | ||
| + | fechaCreacion: | ||
| + | } | ||
| + | | ||
| + | remoteResource.get(function(seguro) { | ||
| + | $scope.seguro=seguro; | ||
| + | }, | ||
| + | alert(" | ||
| + | }); | ||
| + | | ||
| + | }]); | ||
| + | </ | ||
| + | |||
| + | * Línea 1: Ahora en el controlador en vez de inyectar el servicio '' | ||
| + | * Linea 26: Se llama al método '' | ||
| + | * Línea 27: Si todo va bien , se pasan los datos a la propiedad '' | ||
| + | * Línea 28: Es la segunda función anónima que se llama si hay algún error. | ||
| + | * Línea 29: Si falla algo se ejecuta el '' | ||
| ===== Ejemplo ===== | ===== Ejemplo ===== | ||
| El código completo del ejemplo es el siguiente: | El código completo del ejemplo es el siguiente: | ||
| Línea 115: | Línea 159: | ||
| <sxh js; | <sxh js; | ||
| - | var app=angular.module(" | + | var app = angular.module(" |
| - | app.constant(" | + | function RemoteResource($http,baseUrl) { |
| - | + | this.get=function(fnOK, | |
| - | function RemoteResourceProvider() { | + | |
| - | var _baseUrl; | + | |
| - | this.setBaseUrl=function(baseUrl) { | + | |
| - | _baseUrl=baseUrl; | + | |
| - | } | + | |
| - | this.$get=[' | + | |
| - | return { | + | |
| - | get:function(fnOK, | + | |
| $http({ | $http({ | ||
| method: ' | method: ' | ||
| - | url: _baseUrl+'/ | + | url: baseUrl+'/ |
| }).success(function(data, | }).success(function(data, | ||
| fnOK(data); | fnOK(data); | ||
| Línea 136: | Línea 172: | ||
| }); | }); | ||
| } | } | ||
| - | | + | } |
| + | |||
| + | function RemoteResourceProvider() { | ||
| + | var _baseUrl; | ||
| + | this.setBaseUrl=function(baseUrl) { | ||
| + | _baseUrl=baseUrl; | ||
| + | } | ||
| + | this.$get=[' | ||
| + | return new RemoteResource($http, | ||
| }]; | }]; | ||
| } | } | ||
| - | app.provider(" | + | app.provider(" |
| - | app.config([' | + | |
| - | | + | |
| + | app.constant(" | ||
| + | app.config([' | ||
| + | | ||
| }]); | }]); | ||
| - | app.controller(" | + | |
| - | $scope.seguro={ | + | app.controller(" |
| - | nif:"", | + | $scope.seguro = { |
| - | nombre:"", | + | nif: "", |
| - | ape1:"", | + | nombre: "", |
| - | edad: | + | ape1: "", |
| - | sexo:"", | + | edad: undefined, |
| - | casado: | + | sexo: "", |
| - | numHijos: | + | casado: false, |
| - | embarazada: | + | numHijos: undefined, |
| - | coberturas: { | + | embarazada: false, |
| - | oftalmologia: | + | coberturas: { |
| - | dental: | + | oftalmologia: |
| - | fecundacionInVitro: | + | dental: false, |
| - | }, | + | fecundacionInVitro: |
| - | enfermedades: | + | }, |
| - | corazon: | + | enfermedades: |
| - | estomacal: | + | corazon: false, |
| - | rinyones: | + | estomacal: false, |
| - | alergia: | + | rinyones: false, |
| - | nombreAlergia:"" | + | alergia: false, |
| - | }, | + | nombreAlergia: |
| - | fechaCreacion: | + | }, |
| + | fechaCreacion: | ||
| + | } | ||
| + | |||
| + | remoteResource.get(function(seguro) { | ||
| + | $scope.seguro = seguro; | ||
| + | }, function(data, | ||
| + | alert(" | ||
| + | }); | ||
| } | } | ||
| - | + | ]); | |
| - | remoteReource.get(function(seguro) { | + | |
| - | $scope.seguro=seguro; | + | |
| - | }, | + | |
| - | alert(" | + | |
| - | }); | + | |
| - | + | ||
| - | }]); | + | |
| </ | </ | ||
| {{url> | {{url> | ||
| + | ===== Malas prácticas ===== | ||
| + | En muchos ejemplos que se ven de AngularJS se tiende a definir un provider en un único bloque en vez de definir diversas funciones separadas como hemos hecho aqui. | ||
| + | |||
| + | Podemos ver el siguiente trazo de código en el que se ha definido el provider usando varias funciones anónimas anidadas. | ||
| + | |||
| + | <sxh js> | ||
| + | app.provider(" | ||
| + | var _baseUrl; | ||
| + | this.setBaseUrl = function(baseUrl) { | ||
| + | _baseUrl = baseUrl; | ||
| + | } | ||
| + | this.$get = [' | ||
| + | function($http) { | ||
| + | return new function($http, | ||
| + | this.get = function(fnOK, | ||
| + | $http({ | ||
| + | method: ' | ||
| + | url: baseUrl + '/ | ||
| + | }).success(function(data, | ||
| + | fnOK(data); | ||
| + | }).error(function(data, | ||
| + | fnError(data, | ||
| + | }); | ||
| + | } | ||
| + | }($http, _baseUrl); | ||
| + | } | ||
| + | ]; | ||
| + | }); | ||
| + | </ | ||
| + | Este código - aunque funciona - no es recomendable por lo complejo que resulta de entender. | ||
| + | ===== Referencias ===== | ||
| + | * [[https:// | ||
| + | * [[https:// | ||
unidades/03_servicios/10_ejemploseguro.1406756923.txt.gz · Última modificación: por admin
