Saltar al contenido

¿Hay alguna forma en AngularJS de definir constantes con otras constantes?

Si encuentras algún fallo con tu código o proyecto, recuerda probar siempre en un entorno de testing antes añadir el código al proyecto final.

Solución:

Una manera fácil de hacer esto es así:

var myApp = angular.module("exampleApp",[]);

myApp.constant('RESOURCES', (function() 
  // Define your variable
  var resource = 'http://127.0.0.1:8008';
  // Use the variable in your constants
  return 
    USERS_DOMAIN: resource,
    USERS_API: resource + '/users',
    BASIC_INFO: resource + '/api/info'
  
)());

Y usa las constantes así:

myApp.controller("ExampleCtrl", function(RESOURCES)
  $scope.domain = RESOURCES.USERS_DOMAIN;
);

Creditos: enlace

La forma de AngularJS para definir dependencias entre Controladores, Servicios y otros es mediante inyección de dependencia (DI). Entonces, si tiene un controlador A que depende de un servicio B, tendría que crearlo así:

var myApp = angular.module("exampleApp",[]);

myApp.controller("aCtrl", function(serviceB)
    // Controller functionally here
);

Mira, AngularJS verificará la dependencia del servicio B y buscará el servicio que creaste con ese nombre. Si no crea uno obtendrá un error.

Entonces, si desea crear una constante A que dependa de la constante B, deberá decirle a angular que A depende de B. Pero una constante no puede tener una dependencia. Una constante puede devolver una función, pero la DI no funcionará para la constante. Verifique este Fiddle para que pueda ver para qué métodos funciona DI.

Entonces, respondiendo a su pregunta, no puede definir una constante con otras constantes.

Pero puedes hacer esto:

angular.module('projectApp', [])
  .constant('domain', 'http://somedomain.com')
  .constant('api', '/some/api/info')
  .service('urls', function(domain, api) this.apiUrl = domain + api;)

  .controller('mainCtrl',function($scope,urls) 

      $scope.url = urls.apiUrl;

  );

Compruebe este violín para verlo funcionar:

Si desea obtener más información sobre DI, consulte esta publicación.

Lo hago de esta manera:

var constants = angular.module('constants', []);

constants.factory("Independent", [function() 
   return 
      C1: 42
   
]);

constants.factory('Constants', ["Independent", function(I) 
   return 
      ANSWER_TO_LIFE: I.C1
   
]);

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *