AngularJS和传单地图居中绑定到ng repeat迭代变量

AngularJS和传单地图居中绑定到ng repeat迭代变量,angularjs,leaflet,angular-leaflet-directive,Angularjs,Leaflet,Angular Leaflet Directive,我尝试将传单的中心属性绑定到模型,如下所示: <!DOCTYPE html> <html> <title>Test Leaflet</title> <link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.7.1/leaflet.css" /> <script src="http://cdn.leafletjs.com/leaflet-0.7.1/leaflet

我尝试将传单的中心属性绑定到模型,如下所示:

<!DOCTYPE html>
<html>
<title>Test Leaflet</title>
<link rel="stylesheet" href="http://cdn.leafletjs.com/leaflet-0.7.1/leaflet.css" />
<script src="http://cdn.leafletjs.com/leaflet-0.7.1/leaflet.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/angularjs/1.2.6/angular.min.js"></script>
<script src="angular-leaflet-directive.min.js"></script>
<script src="map.js"></script>
<body ng-app="mapApp" ng-controller="mapCtrl">
<ul>
<li ng-repeat="m in maps | orderBy:'ident':false">
        <div>
        {{m.ident}}
        <leaflet center="{{m.center}}" width="300px" height="300px"></leaflet>
        </div>
</li>
</ul>
</body>
</html>
然而,这不起作用。只有删除“中心”属性后,我才能获得贴图,但它们不居中,即:

<leaflet width="300px" height="300px"></leaflet>

任何人都可以在不完全改变整体结构的情况下帮助实现这一点


(提前道歉:我无法让示例在Plunker或Fiddle上运行,即使它在我的所有浏览器中都可以正常工作)

我认为您有两个选择……其中之一是

将此添加到控制器:

angular.extend($scope, {
    center: {
        lat: 51.505,
        lng: -0.09,
        zoom: 4
    }
});
您可能还需要这样做(根据):

如果要在页面上有多个地图并访问它们各自的地图对象,请在HTML中为传单指令添加id属性:



让我知道这能让你走多远……我们将从那里开始。

所以我决定对它进行模拟并测试一些东西。这对我有用

HTML:


让我知道…

我认为我的问题的关键在于,尽管传单指令声称是传单的角度集成,但事实并非如此,也没有真正的双向数据绑定。用“中心”扩展控制器并不能真正解决我的问题,因为我需要中心随每个地图实例而变化。我曾尝试过单独访问每个实例的方法,但由于ng在应用程序生命周期中只重复更新一次超时,因此它确实会受到攻击,因此您需要使用一些技巧,例如在过滤器处理程序中更新,以动态地获得真实的数据绑定更新。
angular.extend($scope, {
    center: {
        lat: 51.505,
        lng: -0.09,
        zoom: 4
    }
});
<leaflet id="mymap" lf-center="center" height="480px" width="640px"></leaflet>
<ul>
<li ng-repeat="m in maps | orderBy:'ident':false">
        <div>
        {{m.ident}}
        <leaflet id="{{m.ident}}" center="m.center" width="300px" height="300px"></leaflet>
        </div>
</li>
</ul>
$scope.center = {center: { lat: 45, lng: 90, zoom: 1 }};

$scope.maps = [
    { ident: "MAP1", center: { lat: -45, lng: -90, zoom: 18 } },
    { ident: "MAP2", center: { lat: -45, lng: -90, zoom: 14} },
    { ident: "MAP3", center: { lat: -45, lng: -90, zoom: 10} },
    { ident: "MAP4", center: { lat: -45, lng: -90, zoom: 6 } }
  ];