В настоящее время мое приложение имеет контроллер, который принимает файл JSON, а затем выполняет итерацию через них с помощью "ng-repeat". Все это отлично работает, но у меня также есть директива, которая должна проходить через один и тот же файл JSON. Это создает проблему, поскольку я не могу дважды запрашивать один и тот же файл JSON на одной странице (и не хочу, потому что это будет неэффективно). И запрос на директиву, и контроллер и итерация через данные JSON просто прекрасны, если я изменю имя файла одного из файлов 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
Директива (работает, когда я использую имя файла, а не location.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
});
});