Tabla de Contenidos

3.6 value

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;  
}]);

Si ejecutamos el ejemplo veremos en la página HTML el texto:

El valor del value "miServicioValue" = Hola mundo

Posibles valores

El servicio value puede tener a parte de valores escalares cualquier cosa como referencias a objetos, referencia a funciones, etc.

Ejemplo

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);
}]);

Lo mas interesante es ver el 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).

Diferencias con constant

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.

Referencias