Question simple: Comment puis-je définir une valeur de portée en html, à lire par mon contrôleur?
var app = angular.module('app', []);
app.controller('MyController', function($scope) {
console.log($scope.myVar);
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app='app'>
<div ng-controller="MyController" app-myVar="test">
{{myVar}}
</div>
</div>
JSFiddle: http://jsfiddle.net/ncapito/YdQcX/
my-var="foo"
quand vous l'appelez. Notez l'utilisation du trait d'union contre camelCase. Remarque:foo
ici est évalué , si vous ne souhaitez pas utiliser '@' dans la définition de portée pour accéder à la valeur de l'attribut.Réponses:
ng-init
ne fonctionne pas lorsque vous affectez des variables à l'intérieur de la boucle. Utilisation{{myVariable=whatever;""}}
La fin
""
arrête l'évaluation de l'expression angulaire en n'importe quel texte.Ensuite, vous pouvez simplement appeler
{{myVariable}}
pour afficher la valeur de votre variable.J'ai trouvé cela très utile lors de l'itération de plusieurs tableaux imbriqués et je voulais conserver mes informations d'itération actuelles dans une variable au lieu de l'interroger plusieurs fois.
la source
{{}}
ne l' utiliser que pour générer une seule variable, et non pour affecter des variables. Je dirais que stackoverflow.com/a/16799763/814160 est plus correct (moins de code JS dans la vue).ngInit
peut aider à initialiser les variables.exemple jsfiddle
la source
Créez une directive appelée
myVar
avecet appelez-le comme ceci:
Notez en particulier la référence de cas de chameau dans la directive au nom de la balise avec trait d'union.
Pour plus d'informations, consultez "Comprendre la transclusion et les portées" ici: - http://docs.angularjs.org/guide/directive
Voici un violon qui montre comment copier des valeurs d'attributs vers des variables d'étendue de différentes manières au sein d'une directive.
la source
var-nick='my' var-nick2='test'
. À moins que vous ne puissiez penser à un moyen de l'implémenter avec des directives que je vais simplement utiliserng-init
scope: {varNick: '@', varNick2: '@'}
Vous pouvez définir des valeurs de HTML comme ceci. Je ne pense pas qu'il existe encore une solution directe d'angular.
la source
<div style="display: none">
cependant.Vous pouvez utiliser
ng-init
comme indiqué ci-dessouspuis utilisez la variable de portée locale dans d'autres sections:
la source
La variable s'initialise après le contrôleur, vous devez donc la surveiller et l'utiliser lorsqu'elle n'est pas initialisée.
la source
J'aime la réponse mais je pense qu'il serait préférable de créer une fonction de portée globale qui vous permettra de définir la variable de portée nécessaire.
Donc, dans le globalController, créez
puis dans votre fichier html, appelez-le
Cela vous permettra ensuite d'utiliser $ scope.myVar dans votre contrôleur respectif
la source
Si vous n'êtes pas dans une boucle, vous pouvez utiliser ng-init sinon vous pouvez utiliser
le "" permet de ne pas afficher votre var
la source