gpt4 book ai didi

javascript - 如何在 angular-leaflet-directive 的标记弹出窗口中显示指令

转载 作者:行者123 更新时间:2023-12-03 08:07:15 25 4
gpt4 key购买 nike

我有一个传单指令,上面绘制了一堆标记。单击标记应打开一个包含大量控件和事件的消息框。我创建了一个名为 infowindow 的指令,它具有我需要的所有功能。

我创建了一个像这样的标记:

var umarker = {
lat: location.latitude,
lng: location.longitude,
draggable: false,
message: "<infowindow></infowindow>",
};

这里我将指令传递给消息属性,当我运行 < 内的所有 div 时,都会显示出来。但是,我还想将参数传递到 infowindow 的范围,以便可以对其进行编译。

我尝试使用以下代码执行此操作:

var contentString = '<infowindow></infowindow>';
var compiled = $compile(contentString)($scope);

var umarker = {
lat: location.latitude,
lng: location.longitude,
draggable: false,
message: compiled[0],
};

但是,我无法完成这项工作,因为我收到错误“超出最大调用堆栈大小”

我还尝试隔离指令中的范围并将参数传递到范围,如下所示

'<infowindow user-details="' + userDetails + '"></infowindow>'

这也不起作用。

任何人都可以帮助我如何让它发挥作用,或者是否可能?

http://jsfiddle.net/xgjdqds4/1/

userDetails 是一个对象,其中包含有关由标记表示的用户的详细信息。

最佳答案

我弄清楚了如何将对象传递给指令。我不确定这是否是最好的方法。但这是有效的。

我正在创建标记,并在消息属性中调用指令:

var marker = {
lat: location.latitude,
lng: location.longitude,
draggable: false,
message: "<infowindow></infowindow>",
};

然后,我将特定标记的自定义属性添加到范围并将范围传递给指令:

getMessageScope: function () {
var infowindowScope = $scope.$new(true);
infowindowScope.userDetails = lu;
return infowindowScope;
},

所以我的标记现在看起来像这样:

marker = {
lat: location.latitude,
lng: location.longitude,
draggable: false,
getMessageScope: function () {
var infowindowScope = $scope.$new(true);
infowindowScope.userDetails = lu;
return infowindowScope;
},
message: '<infowindow></infowindow>',
};

完整代码:

_.forEach(locatedUsers, function (lu) {
var umarker = {
lat: lu.location.latitude,
lng: lu.location.longitude,
draggable: false,
getMessageScope: function () {
var infowindowScope = $scope.$new(true);
infowindowScope.userDetails = lu;
return infowindowScope;
},
message: '<infowindow></infowindow>',
};
$scope.markers['user_' + lu.id] = umarker;
});

关于javascript - 如何在 angular-leaflet-directive 的标记弹出窗口中显示指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34323080/

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