我在一个目录中有多个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();
}
答案 0 :(得分:0)
不允许使用此类网址中的通配符AFAIK。您应该构建一个服务器端端点,它应该读取服务器上目录中的所有文件,连接并将响应返回给您。
对于eX:您可以公开GET URL:/ api / contents / releases 它的服务器端处理程序可以读取包含所有发布JSON的目录并返回给您。