gpt4 book ai didi

javascript - AngularJS Leaflet 指令 $scope.markers 不在拖动时更新

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:18:25 25 4
gpt4 key购买 nike

我正在使用带有 Leaflet 指令的 AngularJS。

为了将标记传递给我正在使用的指令的指令,这很有效。

如我所料,标记存储在 $scope.markers 中。

但是,当我拖动标记时 $scope.markers 的值未更新,所以我添加了一个 watch listener 来检查,就像这样:

$scope.$watch("markers", function(newValue, oldValue) {
$log.info($scope.markers.m1);
});

当我从主 Controller 更新标记时,我看到它们正在更新。在拖动时它们没有,所以我更改了指令以将 markerData 包含在 dragend 上的广播事件中,但是我很惊讶我需要更改 angular-leaflet-directive 以获得所需的结果。

在 MapController 和创建标记的 Controller 中,我添加了:

$scope.$on('leafletDirectiveMarker.dragend',function (e,marker) {
var markerName=marker.markerName
$scope.markers[markerName]=marker.markerData
});

这现在工作正常,但我忍不住认为我做错了。

最佳答案

您是如何将 markers 数组添加到您的范围的?根据示例页面,您需要通过调用扩展范围 angular.extend($scope, {...});

http://tombatossals.github.io/angular-leaflet-directive/#!/examples/dragging-markers (在 javascript angular controller 选项卡中)

关于javascript - AngularJS Leaflet 指令 $scope.markers 不在拖动时更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18898175/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com