Un value
es un servicio al que le pasamos directamente el valor de dicho servicio. Se define llamando al método value
de un módulo.A dicho método le pasaremos el nombre y su valor.
Veamos ahora un ejemplo de value
.
<!DOCTYPE html> <html ng-app="app"> <head> <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.19/angular.min.js"></script> <script src="script.js"></script> </head> <body ng-controller="PruebaController"> El valor del value "miServicioValue" = {{valor}} </body> </html>
var app=angular.module("app",[]); app.value("miServicioValue","Hola mundo"); app.controller("PruebaController",["$scope","miServicioValue",function($scope,miServicioValue) { $scope.valor=miServicioValue; }]);
value
“miServicioValue” con el valor “Hola mundo”value
en el controlador$scope.valor
Si ejecutamos el ejemplo veremos en la página HTML el texto:
El valor del value "miServicioValue" = Hola mundo
El servicio value
puede tener a parte de valores escalares cualquier cosa como referencias a objetos, referencia a funciones, etc.
Veamos ahora un ejemplo de value
con distintos valores.
<!DOCTYPE html> <html ng-app="app"> <head> <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.19/angular.min.js"></script> <script src="script.js"></script> </head> <body ng-controller="PruebaController"> idioma = {{idioma}} <br> suma de 3 + 6 = {{suma}} <br> area = {{area}} </body> </html>
var app=angular.module("app",[]); app.value("idioma","es-es"); app.value("matematicas_simples",{ sumar:function(a,b) { return a+b; }, restar:function(a,b) { return a-b; } }); app.value("radio",10); app.value("area",function(radio) { return 3.1416*radio*radio; }) app.controller("PruebaController",["$scope","idioma","matematicas_simples","radio","area",function($scope,idioma,matematicas_simples,radio,area) { $scope.idioma=idioma; $scope.suma=matematicas_simples.sumar(3,6); $scope.area=area(radio); }]);
value
cuyo valor es un Stringvalue
cuyo valor es un Objeto con los métodos sumar
y restar
value
cuyo valor es un númerovalue
cuyo valor es una función.value
en el controlador.value
idioma
en la propiedad $scope.idioma
.$scope.suma
el resultado de llamar al método sumar
del objeto matematicas_simples
que es el valor de dicho value
.value
es una función , llamamos directamente a la función pasándole como argumento el valor 10 del value
radio
.
value
llamado area
que es una función. Por lo tanto al obtener su valor lo llamamos como una función usando los parentesis: area(radio)
.
Te habrás fijado que este tema es prácticamente el mismo que el de 3.5 constant, es decir que ha sido prácticamente cambiar constant
por value
.
¿Cuál es entonces la diferencia entre ellos? Que como ya hemos comentado en 3.4 Tipos de servicios los servicio de tipo constant
se pueden inyectar en bloque_configbloques y en los 3.9 provider mientras que los value
no pueden.