目前,我的应用程序有一个控制器,它接收一个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
指令(当我使用除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
});
});