Salut, je regardais quelques vidéos angular.js et j'ai vu que la méthode value () était utilisée pour définir une sorte de constante à l'échelle du module. par exemple, on peut définir la configuration de la bibliothèque Angular-UI comme suit: (coffeescript)
angular.module('app',[])
.value "ui.config",
tinymce:
theme: 'simple'
width: '500'
height: '300'
Et mon application ressemble actuellement à ceci:
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']
Mais je n'arrive pas à obtenir cette valeur en appuyant sur la variable «app» qui correspond au module d'application.
J'ai lu ici sur ST et sur le groupe Google d'angularjs qu'une façon de partager du code commun entre les contrôleurs btwn est via un service, ce concept s'appliquera-t-il ici aussi?
Merci!
javascript
angularjs
Nik So
la source
la source
Réponses:
Module.value(key, value)
est utilisé pour injecter une valeur modifiable,Module.constant(key, value)
est utilisé pour injecter une valeur constanteLa différence entre les deux n'est pas tant que vous "ne pouvez pas éditer une constante", c'est plus que vous ne pouvez pas intercepter une constante avec $ provide et injecter autre chose.
la source
J'ai récemment voulu utiliser cette fonctionnalité avec Karma dans un test. Comme le souligne Dan Doyon, la clé est que vous injecteriez une valeur comme un contrôleur, un service, etc. Vous pouvez définir .value sur de nombreux types différents - chaînes, tableaux d'objets, etc. Par exemple:
myvalues.js un fichier contenant une valeur - assurez-vous qu'il est inclus dans votre fichier de configuration karma
]);
test / spec / mytest.js - il s'agit peut-être d'un fichier de spécifications Jasmine chargé par Karma
la source
Vous devez référencer
csrf
dans votre contrôleurIndexUsersCtrl = ( $scope, csrf )
la source