Einfache Frage: Wie kann ich einen Bereichswert in HTML festlegen, der von meinem Controller gelesen werden soll?
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"
wenn Sie ihn aufrufen. Beachten Sie die Verwendung von Bindestrich vs. camelCase. Hinweis:foo
Hier wird ausgewertet , wenn Sie nicht möchten, dass '@' in der Bereichsdefinition verwendet wird, um auf den Wert des Attributs zuzugreifen.Antworten:
ng-init
funktioniert nicht, wenn Sie Variablen innerhalb der Schleife zuweisen. Verwenden{{myVariable=whatever;""}}
Das Schleppen
""
der Winkelausdruck für einen beliebigen Text ausgewertet wird.Dann können Sie einfach anrufen
{{myVariable}}
um Ihren Variablenwert auszugeben.Ich fand dies sehr nützlich, wenn ich mehrere verschachtelte Arrays iterierte, und ich wollte meine aktuellen Iterationsinformationen in einer Variablen behalten, anstatt sie mehrmals abzufragen.
quelle
{{}}
nur eine einzelne Variable auszugeben, nicht Variablen zuzuweisen. Ich würde sagen, stackoverflow.com/a/16799763/814160 ist korrekter (weniger JS-Code in der Ansicht).ngInit
kann helfen, Variablen zu initialisieren.jsfiddle Beispiel
quelle
Erstellen Sie eine Direktive, die
myVar
mit aufgerufen wirdund nenne es so:
Beachten Sie insbesondere den Kamelfallverweis in der Direktive auf den mit Bindestrich versehenen Markennamen.
Weitere Informationen finden Sie unter "Grundlegendes zu Transklusion und Umfang" hier: - http://docs.angularjs.org/guide/directive
Hier ist eine Geige , die zeigt, wie Sie Werte aus Attributen auf verschiedene Arten innerhalb einer Direktive in Bereichsvariablen kopieren können.
quelle
var-nick='my' var-nick2='test'
. Es sei denn, Sie können sich eine Möglichkeitng-init
scope: {varNick: '@', varNick2: '@'}
Sie können Werte wie folgt in HTML festlegen. Ich denke, es gibt noch keine direkte Lösung von Angular.
quelle
<div style="display: none">
.Sie können
ng-init
wie unten gezeigt verwendenund verwenden Sie dann die lokale Bereichsvariable in anderen Abschnitten:
quelle
Die Variable wird nach dem Controller initialisiert, sodass Sie darauf achten müssen und wenn sie nicht initialisiert ist, verwenden Sie sie.
quelle
Ich mag die Antwort, aber ich denke, es wäre besser, wenn Sie eine globale Bereichsfunktion erstellen, mit der Sie die erforderliche Bereichsvariable festlegen können.
Also im globalController erstellen
und dann in Ihrer HTML-Datei rufen Sie es auf
Auf diese Weise können Sie $ scope.myVar in Ihrem jeweiligen Controller verwenden
quelle
Wenn Sie sich nicht in einer Schleife befinden, können Sie ng-init verwenden, andernfalls können Sie verwenden
Die "" Alows zeigen Ihre Var nicht an
quelle