Angular http.get中的通配符?

时间:2015-09-16 16:51:14

标签: json angularjs get

我在一个目录中有多个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();
}

1 个答案:

答案 0 :(得分:0)

不允许使用此类网址中的通配符AFAIK。您应该构建一个服务器端端点,它应该读取服务器上目录中的所有文件,连接并将响应返回给您。

对于eX:您可以公开GET URL:/ api / contents / releases 它的服务器端处理程序可以读取包含所有发布JSON的目录并返回给您。