Pregunta simple: ¿Cómo puedo establecer un valor de alcance en html, para que lo lea mi controlador?
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"
cuando lo llame. Tenga en cuenta el uso de guión frente a camelCase. Nota:foo
aquí se evalúa , si no desea que use '@' en la definición del alcance para acceder al valor del atributo.Respuestas:
ng-init
no funciona cuando asigna variables dentro del ciclo. Utilizar{{myVariable=whatever;""}}
El final
""
detiene la evaluación de la expresión angular en cualquier texto.Luego, simplemente puede llamar
{{myVariable}}
para generar su valor de variable.Encontré esto muy útil al iterar múltiples matrices anidadas y quería mantener mi información de iteración actual en una variable en lugar de consultarla varias veces.
fuente
{{}}
solo para generar una sola variable, no para asignar variables. Yo diría que stackoverflow.com/a/16799763/814160 es más correcto (menos código JS en la vista).ngInit
puede ayudar a inicializar variables.ejemplo de jsfiddle
fuente
Cree una directiva llamada
myVar
cony llámalo así:
Tenga en cuenta en particular la referencia de caso de camello en la directiva al nombre de la etiqueta con guión.
Para obtener más información, consulte "Comprensión de la transclusión y los alcances" aquí: http://docs.angularjs.org/guide/directive
Aquí hay un Fiddle que muestra cómo puede copiar valores de atributos a variables de alcance de varias formas diferentes dentro de una directiva.
fuente
var-nick='my' var-nick2='test'
. A menos que pueda pensar en una forma de implementarlo con directivas que solo voy a usarng-init
scope: {varNick: '@', varNick2: '@'}
Puede establecer valores de html como este. No creo que haya una solución directa de angular todavía.
fuente
<div style="display: none">
sin embargo lo recomendaría .Puede usar
ng-init
como se muestra a continuacióny luego use la variable de alcance local en otras secciones:
fuente
La variable se inicializa después del controlador, por lo que debe vigilarlo y, cuando no esté inicializado, utilizarlo.
fuente
Me gusta la respuesta, pero creo que sería mejor que creara una función de alcance global que le permita establecer la variable de alcance necesaria.
Entonces en el globalController crea
y luego en su archivo html llámelo
Esto le permitirá usar $ scope.myVar en su controlador respectivo
fuente
Si no está en un bucle, puede usar ng-init; de lo contrario, puede usar
el "" no permite mostrar su var
fuente