【问题标题】:Wildcard in Angular http.get?Angular http.get 中的通配符?
【发布时间】: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)。

标签: json angularjs get


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-01
    • 1970-01-01
    • 2016-11-11
    • 1970-01-01
    • 2020-01-23
    相关资源
    最近更新 更多