w3schools entre diferencia constantes constant javascript angularjs

javascript - entre - Angular.js: Es.value() la forma correcta de configurar la aplicación como una constante y cómo recuperarla en un controlador



diferencia entre let y var (3)

Hola. Estaba viendo un par de videos de angular.js y vi que el método value () se usaba para establecer un tipo de constante a nivel de módulo. por ejemplo, uno puede establecer la configuración de la biblioteca Angular-UI así: (coffeescript)

angular.module(''app'',[]) .value "ui.config", tinymce: theme: ''simple'' width: ''500'' height: ''300''

Y mi aplicación se ve así:

window.app = angular.module("app", [ ''ui'']) .config(["$routeProvider", ($routeProvider) -> $routeProvider .when "/users", templateUrl: "assets/templates/users/index.html" controller: IndexUsersCtrl .otherwise redirectTo: "/users" ]) .value ''csrf'', $(''meta[name="csrf-token"]'').attr(''content'') #<---- attention here IndexUsersCtrl = ($scope) -> $scope.users = gon.rabl console.log "I want to log the csrf value here" #<---- then attention IndexUsersCtrl.$inject = [''$scope'']

Pero parece que no puedo obtener ese valor al tocar en la variable ''aplicación'' que corresponde al módulo de la aplicación.

Leí aquí en ST y en el grupo de google de angularjs que una forma de compartir código común btwn controladores es a través de un servicio, este concepto se aplicará aquí también?

¡Gracias!


Recientemente quise usar esta característica con Karma dentro de una prueba. Como señala Dan Doyon, la clave es que se inyectaría un valor igual que un controlador, servicio, etc. Puede establecer .value en muchos tipos diferentes: cadenas, matrices de objetos, etc. Por ejemplo:

myvalues.js un archivo que contiene un valor - asegúrese de que esté incluido en su archivo karma conf

var myConstantsModule = angular.module(''test.models'', []); myConstantModule.value(''dataitem'', ''thedata''); // or something like this if needed myConstantModule.value(''theitems'', [ {name: ''Item 1''}, {name: ''Item 2''}, {name: ''Item 3''} ]);

]);

test / spec / mytest.js - tal vez este es un archivo de especificación de Jasmine cargado por Karma

describe(''my model'', function() { var theValue; var theArray; beforeEach(module(''test.models'')); beforeEach(inject(function(dataitem,theitems) { // note that dataitem is just available // after calling module(''test.models'') theValue = dataitem; theArray = theitems; }); it(''should do something'',function() { // now you can use the value in your tests as needed console.log("The value is " + theValue); console.log("The array is " + theArray); }); });


Module.value(key, value) se utiliza para inyectar un valor editable, Module.constant(key, value) se utiliza para inyectar un valor constante

La diferencia entre los dos no es tanto que "no puedas editar una constante", sino que no puedes interceptar una constante con $ provide e inyectar algo más.

// define a value app.value(''myThing'', ''weee''); // define a constant app.constant(''myConst'', ''blah''); // use it in a service app.factory(''myService'', [''myThing'', ''myConst'', function(myThing, myConst){ return { whatsMyThing: function() { return myThing; //weee }, getMyConst: function () { return myConst; //blah } }; }]); // use it in a controller app.controller(''someController'', [''$scope'', ''myThing'', ''myConst'', function($scope, myThing, myConst) { $scope.foo = myThing; //weee $scope.bar = myConst; //blah });


csrf hacer referencia a csrf en su controlador IndexUsersCtrl = ( $scope, csrf )

IndexUsersCtrl.$inject = [ ''$scope'', ''csrf'' ]