Chcę zainicjować model kątowy za pomocą obiektu JSON, który jest osadzony na stronie HTML. Przykład:Dostęp do zmiennej globalnej z AngularJS
<html>
<body>
<script type="text/javascript" charset="utf-8">
var tags = [{"name": "some json"}];
</script>
<ul>
<li ng-repeat="tag in tags">{{tag.name}}</li>
</ul>
</body>
</html>
Pole tags
nie może zostać rozwiązany, ponieważ jest on spojrzał w $scope
. Próbowałem otworzyć pole tags
w moim kontroler następująco:
function TagList($scope, $rootScope) {
$scope.tags = $rootScope.tags;
}
Ale to nie działa.
Działa tylko wtedy, gdy dołączę TagList
bezpośrednio do strony HTML i renderuję json bezpośrednio do tej funkcji.
Jak mogę uzyskać dostęp do pola tags
w oddzielnym pliku js w kontrolerze kątowym?
Czy istnieje inny sposób zainicjowania zmiennej w widoku bez konieczności zadeklarowania jej wewnątrz znacznika HTML? Na przykład, jeśli tablica 'tags' zadeklarowana w' ng-init' powyżej była naprawdę dużą tablicą i chcę ją zainicjować w widoku (z kodu po stronie serwera dla przykładu), mogę użyć czegoś takiego jak '{{tags = [{...}]}} 'zamiast? – GFoley83
@Stewie są również problemy z drugim podejściem. Jeśli znaczniki są generowane za pomocą metody jsonify, a jeśli zawierają cytaty, wszystko się zahamuje – Hartimer
Nie widzę lepszego sposobu niż użycie okna $ dla przypadku użycia @ GFoley83; Mam ten sam problem, wysyłam początkowy ładunek JSON ze znacznikiem, który chcę wprowadzić do kontrolera, ale jest to zaskakująco trudne w przypadku Angular. Nie lubię zanieczyszczania obiektu okna (lub konieczności wciągnięcia globali) albo, ale wydaje się to najlepszym sposobem. –