2015-09-16 81 views
0

我在一個目錄中有多個JSON文件,我將從這些JSON文件構建視圖內容。 JSON文件結構相同。Angular http.get中的通配符?

加載多個用於ng-repeat的JSON文件的正確語法是什麼?我試過這個,但它拋出了一個權限被拒絕的錯誤(視圖通過路徑加載,如果它很重要,仍然學習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

我想是簡單地將JSON文件連接成一個更大的源文件比較好,這樣就只存在一個JSON文件。類似Ashutosh Upadhyay在答案中的建議?它可能會保存一些請求,因爲文件本身仍然很小(24 KB)。 –

回答

0

通配符據我所知在這樣的URL是不允許的。您應該構建一個服務器端端點,該端點應讀取服務器上目錄中的所有文件,並將響應連接並返回給您。 eX:你可以公開一個GET URL:/ api/contents/releases ,它的服務器端處理程序可以讀取包含所有版本JSON的目錄並返回給你。