【发布时间】:2015-09-16 16:51:14
【问题描述】:
我在一个目录中有多个 JSON 文件,我将从这些 JSON 文件构建视图内容。 JSON 文件的结构相同。
加载多个 JSON 文件以用于ng-repeat 的正确语法是什么?我试过这个,但它会抛出一个权限被拒绝的错误(视图是通过路由加载的,如果重要的话。还在学习 Angular...)。
我用这些:
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.5/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.5/angular-route.min.js"></script>
视图片段:
<div ng-controller="releases">
<article ng-repeat="album in albums">
{{ album.artist }}
</article>
</div>
控制器:
myApp.controller('releases', function($scope, $http) {
$scope.albums = [];
$http.get('contents/releases/*.json')
.then(function(releases) {
$scope.albums = releases.data;
console.log($scope.albums);
});
});
JSON 文件是这样的:
{
"artist" : "Artist name",
"album" : "Album title",
"releaseDate" : "2015-09-16"
}
错误信息是:
You don't have permission to access /mypage/angular/contents/releases/*.json on this server.
如果我使用准确的文件名,例如$http.get('contents/releases/album.json'),我可以正确访问数据。但自然只针对一个 JSON,而不是我拥有的 11 个文件。
在我之前使用 PHP 完成的站点中,我使用了相同的方法,在那里我可以毫无问题地访问相同的文件。对于两者,我都使用 WAMP 服务器 (Apache 2) 作为平台。
它仍然与 Apache 配置有关吗?我不认为是这样的原因是因为它在 PHP 中确实像这样工作:
// Get release data
$releasesDataLocation = 'contents/releases/*.json';
$releasesDataFiles = glob($releasesDataLocation);
rsort($releasesDataFiles); // Rsort = newest release first, comment out to show oldest first
// Show the releases
foreach($releasesDataFiles as $releaseData) {
$release = new Release($releaseData);
$release->display();
}
【问题讨论】:
-
我想在源头简单地将 JSON 文件连接成一个更大的文件更好,这样就只存在一个 JSON 文件。类似于 Ashutosh Upadhyay 在答案中的建议?它可能会节省一些请求,因为文件本身仍然很小 (24 KB)。