目前,我的應用程序有一個控制器,它接受一個JSON文件,然後使用「ng-repeat」遍歷它們。這一切都很好,但我也有一個指令,需要遍歷相同的JSON文件。這是一個問題,因爲我無法在一個頁面上請求兩次相同的JSON文件(我也不想這樣做,因爲效率不高)。如果我更改其中一個JSON文件的文件名,指令和控制器請求並遍歷JSON數據就好了。在Angular中,如何將JSON對象/數組傳遞給指令?
我想知道的是:什麼是最好的方式去將從我的控制器的JSON請求形成的數組傳遞到指令?如何將數組傳遞到我的指令中,並在通過控制器訪問時反覆遍歷?
控制器
appControllers.controller('dummyCtrl', function ($scope, $http) {
$http.get('locations/locations.json').success(function(data) {
$scope.locations = data;
});
});
HTML
<ul class="list">
<li ng-repeat="location in locations">
<a href="#">{{location.id}}. {{location.name}}</a>
</li>
</ul>
<map></map> //executes a js library
指令(工作時,我使用的文件名之外locations.json,因爲我已經申請了一次
.directive('map', function($http) {
return {
restrict: 'E',
replace: true,
template: '<div></div>',
link: function(scope, element, attrs) {
$http.get('locations/locations.json').success(function(data) {
angular.forEach(data.locations, function(location, key){
//do something
});
});
您應該使用服務的第一件事情,而不是使用控制器來獲取您的位置數據。在此之後,您可以通過在控制器和您的指令中依賴注入您的服務中的數據。 –