87 votes

Angular.js : Est .value() le bon moyen de définir app large constant et comment récupérer un contrôleur

Salut là, je regardais un couple de la angular.js vidéos et vu que la méthode value() a été utilisé pour définir un type de module de largeur constante. par exemple, on peut définir la Angulaires-bibliothèque d'INTERFACE utilisateur de configuration comme suit: (coffeescript)

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

Et mon application est actuellement à la recherche comme 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 le 'app' variable qui est correspondant à l'application du module.

J'ai lu jusqu'ici sur ST et plus sur angularjs du groupe google une façon de partager le code commun btwn contrôleurs est par le biais d'un service, ce concept s'applique aussi ici?

Merci!

147voto

Ben Lesh Points 39290

est utilisée pour injecter une valeur modifiable, est utilisé pour injecter une valeur constante

La différence entre les deux n’est pas tellement de choses que vous « ne pouvez pas modifier une constante », c’est plus que vous ne pouvez pas intercepter une constante avec $provide et injecter quelque chose d’autre.

4voto

SnapShot Points 2409

Récemment, j'ai voulu utiliser cette fonctionnalité avec le Karma à l'intérieur d'un test. Comme Dan Doyon points de la clé est que vous pouvez injecter une valeur juste comme un contrôleur, le service, etc. Vous pouvez définir .la valeur de beaucoup de différents types de chaînes de caractères, les tableaux d'objets, etc. Par exemple:

myvalues.js un fichier contenant la valeur assurez-vous qu'il est compris dans votre karma fichier 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 - c'est peut-être un Jasmin spec fichier chargé par le 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);
    });
});

2voto

Dan Doyon Points 4081

Vous devez référencer dans votre contrôleur

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X