使用过滤器与geojson,正确的方向?

时间:2014-12-29 22:52:06

标签: angularjs leaflet geojson angular-filters

我想将过滤器附加到angular-leaflet-directive显示的地图上,这样geojson将在表格和地图中进行过滤,我尝试了类似的东西,但是工作不正常,我疯了吗?

我的应用控制器

AppMapDirectory.controller("DirectoryMapList", function($scope, Directory, $filter,     filterFilter) {
Directory.get(function(data) {
   $scope.hf_directory = data.features;
   angular.extend($scope, {
       geojson: {
           data: filterFilter($scope.hf_directory, $scope.search),
           filter: $scope.filter


       }
   });
   });


   angular.extend($scope, {
     defaults: {
         tileLayer: "https://dnv9my2eseobd.cloudfront.net/v3/foursquare.map-ikj05elx/{z}/{x}/{y}.png",
        maxZoom: 14,
        minZoom: 3
     },
     center: {
        lat: 8.1238,
        lng: 11.8777,
        zoom: 2
    }
    });

我的模板

 <leaflet id="map" center="center" defaults="defaults" geojson="geojson"></leaflet>

我在考虑添加geojson =&#34; geojson | filter:search&#34; 但是没有解决问题?

也许有其他方法,有可能以某种方式添加ng-repeat给传单?那么我假设过滤器:搜索会起作用吗?

1 个答案:

答案 0 :(得分:1)

您正在将$filterfilterFilter注入您的控制器,但您实际上并未将其中一个注入您的范围。同时,您将$scope.filter分配给geojson声明的filter属性。这不起作用,因为未声明$scope.filter。在使用geojson声明扩展范围之前,您必须将过滤器分配到范围:$scope.filter = filterFilter$scope.filter = $filter,具体取决于您需要的范围。我不清楚,因为我看不到$filterfilterFilter包含的内容。

// assign filterFilter to the $scope
$scope.filter = filterFilter;
// or assign $filter to the $scope
$scope.filter = $filter;

angular.extend($scope, {
    geojson: {
        data: filterFilter($scope.hf_directory, $scope.search),
        filter: $scope.filter
    }
});