来自 ng-map 和 ng-repeat 的自定义标记在仍然正常工作的同时给我 $digest 循环错误

custom-marker from ng-map with ng-repeat gives me $digest loop errors while still working properly

我目前使用 this 在地图上获取自定义标记。

我在 plunker 上运行时没有错误,但在我自己的网站上却没有(即使我使用相同的脚本 src 链接)

在我自己的页面上,ng-repeat 有效,但它给出了 2 个很长的错误,通知我有关 $digest 循环

这是我的清单:

$scope.list = [{ name: 'test', pos: [41, -87] }, { name: 'test2', pos: [40, -86] }];

这是 HTML:

<ng-map zoom-to-include-markers="auto" style="height:200px;width:400px;">
    <marker ng-repeat="item in list" position="{{item.pos}}"></marker>
</ng-map>

上面没有报错,但是

<ng-map zoom-to-include-markers="auto" style="height:200px;width:400px;">
    <custom-marker ng-repeat="item in list" position="{{item.pos}}">
        <div style="background-color:white;border: 1px solid black;">this is a test</div>
    </custom-marker>
</ng-map>

确实如此。每次我向列表中添加一个项目时,它也会给我 2 个额外的错误,但它仍然可以正常工作。

我不知道为什么它在 plunker 上有效,但在我自己的网站上却无效,我使用 ASP.NET 5 来提供它,使用相同的版本。在我自己的网站上还使用了 ng-animate、ng-resource 和一堆与 angular 无关的东西,但这应该无关紧要。 (我希望)

如果你需要它,我的控制器正在使用这些:

function ($scope, $rootScope, restData, NgMap) {

应用模块正在使用这个:

var app = angular.module('app', ['ngResource', 'ngMap'])

我自己修好了。

我在问这个问题之前尝试使用 this 来解决我的问题,但我可能忘记了其中的一部分,因为它在我第二次尝试时有效。

您需要使用

$scope.positions = angular.copy(data) 

并绑定到那个单独的 'positions' 变量,如果你想重新绑定,就复制它,你不能直接从前端绑定到数据本身。