Javascript 从AngularJS访问全局变量
我想用嵌入HTML页面中的JSON对象初始化一个角度模型。例如:Javascript 从AngularJS访问全局变量,javascript,json,angularjs,Javascript,Json,Angularjs,我想用嵌入HTML页面中的JSON对象初始化一个角度模型。例如: <html> <body> <script type="text/javascript" charset="utf-8"> var tags = [{"name": "some json"}]; </script> <ul> <li n
<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>
但它不起作用
只有将标记列表
直接包含到HTML页面中,并将JSON直接呈现到该函数中,它才能工作
如何访问角度控制器中单独js文件中的
标记
字段?至少有两种方法:
标记
数组,在这种情况下,标记
变量将绑定到窗口对象。将$window注入控制器以访问窗口绑定变量ng init
指令中声明标记
数组我强烈建议不要污染窗口对象。是否有其他方法可以在视图中初始化变量,而不必在HTML标记中声明它?例如,如果上面在
nginit
中声明的tags
数组是一个非常大的数组,我想在视图中初始化它(例如从服务器端代码),我可以使用类似{{tags=[{…}}}}
的东西吗?@Stewie第二种方法也存在问题。如果标签是通过jsonify方法生成的,并且如果它们包含引号,那么brakeI看不到比在@GFoley83的用例中使用$window更好的方法;我也有同样的问题,我发送了一个初始的JSON负载,其中包含我想要注入到控制器中的标记,但是这对于Angular来说非常困难。我也不喜欢污染窗口对象(或者必须拉入全局对象),但这似乎是最好的方法。@ElYobo是的,这非常困难,还没有干净的解决方法。我想我更喜欢使用
之类的东西,而不是必须传递全局变量。
function TagList($scope, $rootScope) {
$scope.tags = $rootScope.tags;
}
<body>
<script type="text/javascript" charset="utf-8">
var tags = [{"name": "some json"}];
</script>
<div ng-controller="AppController">
tags: {{tags | json}}
<ul>
<li ng-repeat="tag in tags">{{tag.name}}</li>
</ul>
</div>
<div>
<ul ng-init="tags = [{name: 'some json'}]">
<li ng-repeat="tag in tags">{{tag.name}}</li>
</ul>
</div>
</body>
app.controller('AppController',
[
'$scope',
'$window',
function($scope, $window) {
$scope.tags = $window.tags;
}
]
);