2015-09-16 3 views
0

У меня есть несколько файлов JSON в одном каталоге, и я собираюсь создать содержимое представления из этих файлов JSON. Файлы JSON идентичны по структуре.Подстановочный знак в Angular http.get?

Каков правильный синтаксис для загрузки нескольких файлов JSON для использования с ng-repeat? Я попытался с этим, но он выдает ошибку с отклонениями в разрешении (просмотр загружается по маршруту, если это имеет значение. Все еще изучается Угловое ...).

Я использую эти:

<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> 

Snippet с точки зрения:

<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

Я думаю, что лучше просто объединить файлы JSON в один более крупный источник, так что существует только один JSON-файл. Как говорит Ашутош Упадхай в ответ? Он может сэкономить некоторые запросы, так как сам файл по-прежнему довольно мал (24 КБ). –

ответ

0

Wildcard AFAIK в таких URL-адресов не допускается. Вы должны создать конечную точку на стороне сервера, которая должна прочитать все файлы в вашем каталоге на сервере, объединить и вернуть ответ вам.

Для eX: вы можете открыть URL-адрес GET:/api/contents/releases , а обработчик на стороне сервера может читать каталог, содержащий все выпуски JSON, и возвращаться к вам.

Смежные вопросы