Я хочу инициализировать угловую модель с помощью объекта JSON, который встроен в HTML-страницу. Пример:Доступ к глобальной переменной из 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>
tags
поле не может быть решена, потому что она ищется в $scope
. Я пытался получить доступ к tags
поля в моем контроллере, как это:
function TagList($scope, $rootScope) {
$scope.tags = $rootScope.tags;
}
Но это не работает.
Он работает только в том случае, если я включаю TagList
непосредственно в HTML-страницу и передаю json непосредственно в эту функцию.
Как я могу получить доступ к полю tags
в отдельном файле js в угловом контроллере?
Есть ли другой способ инициализировать переменную в представлении, не объявляя ее внутри тега HTML? Например, если массив 'tags', объявленный внутри' ng-init' выше, был действительно большим массивом, и я хочу инициализировать его в представлении (из кода на стороне сервера для ex.), Могу ли я использовать что-то вроде '{{tags = [{...}]}} 'вместо этого? – GFoley83
@Stewie есть также проблемы со вторым подходом. Если теги генерируются методом jsonify, и если они содержат кавычки, все будет тормозить. – Hartimer
. Я не вижу лучшего способа, чем использовать окно $ для использования для использования GFoley83; У меня такая же проблема, я посылаю начальную полезную нагрузку JSON с разметкой, которую я хочу ввести в контроллер, но это удивительно сложно сделать с Angular. Мне не нравится загрязнять оконный объект (или вытягивать глобальные переменные), но это кажется лучшим. –