dea*_*mon 8 javascript json angularjs
我想用一个嵌入在HTML页面中的JSON对象初始化一个Angular模型.例:
<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>
Run Code Online (Sandbox Code Playgroud)
该tags字段无法解析,因为它在查找中$scope.我试图访问tags我的控制器中的字段,如下所示:
function TagList($scope, $rootScope) {
$scope.tags = $rootScope.tags;
}
Run Code Online (Sandbox Code Playgroud)
但它不起作用.
它只有在我TagList直接包含在HTML页面中并将json直接渲染到此函数中时才有效.
如何tags在Angular控制器中的单独js文件中访问该字段?
Ste*_*wie 11
至少有两种方式:
tags在独立的脚本标记中声明您的数组,在这种情况下,您的tags变量将绑定到window对象.将$ window注入控制器以访问窗口绑定变量.tags在ng-init指令中声明您的数组.显示两种解决方案
HTML:
<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>
Run Code Online (Sandbox Code Playgroud)
JS:
app.controller('AppController',
[
'$scope',
'$window',
function($scope, $window) {
$scope.tags = $window.tags;
}
]
);
Run Code Online (Sandbox Code Playgroud)
我强烈建议不要污染窗口对象.