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.valorSi 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 restarvalue 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.