Javascript 集成AngularJS+;传单

Javascript 集成AngularJS+;传单,javascript,angularjs,leaflet,geojson,angular-leaflet-directive,Javascript,Angularjs,Leaflet,Geojson,Angular Leaflet Directive,我正在使用AngularJS和传单构建一个Web应用程序。我已经试过了,但是这会使webapp太慢,没有响应(我有+2000个点和许多复杂的多边形) 我使用$http.get将多边形的GeoJSON加载到传单中,并将相同的数据绑定到Angular中。GeoJSON特性的属性填充一个表,我通过多边形ID(也是一个feature.property)过滤该表,如下所示: <div ng-repeat="bcd in nycd.features | filter: {properties.boro

我正在使用AngularJS和传单构建一个Web应用程序。我已经试过了,但是这会使webapp太慢,没有响应(我有+2000个点和许多复杂的多边形)

我使用$http.get将多边形的GeoJSON加载到传单中,并将相同的数据绑定到Angular中。GeoJSON特性的属性填充一个表,我通过多边形ID(也是一个feature.property)过滤该表,如下所示:

<div ng-repeat="bcd in nycd.features | filter: {properties.borocd: last_clicked} ">
    <div>{{ bcd.properties.borocd }}</div>
</div>

但是,当我单击映射时,我的
$scope.last_clicked
变量会更新,但
ng repeat
的过滤器不会更新。我已经用
测试过过滤
ng repeat
,它可以工作,但在点击传单地图时仍然没有任何效果。有什么想法吗?

解决方案是使用charlietfl在评论中指出的
$scope.$apply()

更新原始问题中的代码:

...
    mapApp.nycd = L.geoJson($scope.nycd, {
      onEachFeature: function (feature, layer) {
        layer.on('click', function(e) {
          $scope.last_clicked = feature.properties.borocd; //change ID with map click
          $scope.$apply(); //this updates the filter
        });
...

我不确定我是否完全理解为什么它以前没有自动更新,但这可能会有所帮助。

事件不在angular上下文范围内,所以您需要在修改范围时告诉angular运行摘要。。。试试
$scope.$apply()
@charlietfl,你说得对!谢谢我已经在下面回答了。
...
    mapApp.nycd = L.geoJson($scope.nycd, {
      onEachFeature: function (feature, layer) {
        layer.on('click', function(e) {
          $scope.last_clicked = feature.properties.borocd; //change ID with map click
          $scope.$apply(); //this updates the filter
        });
...