101 votes

Définir une variable de portée angulaire dans le balisage

Une question simple : Comment puis-je définir une valeur de portée en html, qui sera lue 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/

1voto

$scope.$watch('myVar', function (newValue, oldValue) {
        if (typeof (newValue) !== 'undefined') {
            $scope.someothervar= newValue;
//or get some data
            getData();
        }

    }, true);

La variable s'initialise après le contrôleur, vous devez donc la surveiller et lorsqu'elle n'est pas initialisée, l'utiliser.

1voto

Yohann JAFFRES Points 11

Si vous n'êtes pas dans une boucle, vous pouvez utiliser ng-init sinon vous pouvez utiliser

{{var=foo;""}}

le "" permet de ne pas afficher votre var

0voto

J'aime la réponse mais je pense qu'il serait préférable que vous créiez une fonction de portée globale qui vous permettra de définir la variable de portée nécessaire.

Ainsi, dans le globalController, créez

$scope.setScopeVariable = function(variable, value){
    $scope[variable] = value;
}

et ensuite, dans votre fichier html, appelez-le

{{setScopeVariable('myVar', 'whatever')}}

Cela vous permettra d'utiliser $scope.myVar dans votre contrôleur respectif.

0voto

Golden Griffin Points 361

Vous pouvez utiliser la directive ng-value dans un champ caché comme ci-dessous :-.

<input type="hidden" ng-value="myScopeVar = someValue"/>

Ceci définira la valeur de la variable de portée (myScopeVar) à "someValue".

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