Proste pytanie: Jak mogę ustawić wartość zakresu w html, aby mój kontroler mógł go odczytać?
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"
kiedy go wywołasz. Zwróć uwagę na użycie łącznika w porównaniu z camelCase. Uwaga:foo
tutaj jest oceniane , jeśli nie chcesz, aby użycie znaku „@” w definicji zakresu miało dostęp do wartości atrybutu.Odpowiedzi:
ng-init
nie działa, gdy przypisujesz zmienne wewnątrz pętli. Posługiwać się{{myVariable=whatever;""}}
Końcowe
""
zatrzymuje obliczanie wyrażenia kątowego na dowolny tekst.Wtedy możesz po prostu zadzwonić
{{myVariable}}
aby wyświetlić wartość zmiennej.Okazało się, że jest to bardzo przydatne podczas iteracji wielu zagnieżdżonych tablic i chciałem zachować moje bieżące informacje o iteracji w jednej zmiennej zamiast wielokrotnego wykonywania zapytań.
źródło
{{}}
tylko do wyświetlania pojedynczej zmiennej, a nie do przypisywania zmiennych. Powiedziałbym, że stackoverflow.com/a/16799763/814160 jest bardziej poprawny (mniej kodu JS w widoku).ngInit
może pomóc w inicjalizacji zmiennych.przykład jsfiddle
źródło
Utwórz dyrektywę o nazwie
myVar
withi nazwij to tak:
W szczególności należy zwrócić uwagę na odniesienie w dyrektywie do przypadku wielbłąda do nazwy znacznika z łącznikiem.
Aby uzyskać więcej informacji, zobacz „Understanding Transclusion and Scopes” tutaj: - http://docs.angularjs.org/guide/directive
Oto Fiddle, który pokazuje, jak można kopiować wartości z atrybutów do zmiennych zakresu na różne sposoby w ramach dyrektywy.
źródło
var-nick='my' var-nick2='test'
. Chyba że możesz wymyślić sposób na zaimplementowanie go za pomocą dyrektyw, których właśnie zamierzam użyćng-init
scope: {varNick: '@', varNick2: '@'}
Możesz ustawić wartości z html w ten sposób. Myślę, że nie ma jeszcze bezpośredniego rozwiązania z kątowego.
źródło
<div style="display: none">
jednak.Możesz użyć,
ng-init
jak pokazano poniżeja następnie użyj zmiennej zakresu lokalnego w innych sekcjach:
źródło
Zmienna inicjalizuje się po kontrolerze, więc musisz ją pilnować, a gdy nie jest zainicjalizowana, użyj jej.
źródło
Podoba mi się odpowiedź, ale myślę, że byłoby lepiej, gdybyś utworzył funkcję zasięgu globalnego, która pozwoli ci ustawić potrzebną zmienną zakresu.
Więc w globalController create
a następnie w swoim pliku html wywołaj to
Umożliwi to użycie zmiennej $ scope.myVar w odpowiednim kontrolerze
źródło
Jeśli nie jesteś w pętli, możesz użyć ng-init innego, którego możesz użyć
"" pozwala nie wyświetlać twojego var
źródło