无法在 bing 地图中的图钉描述中的 onclick 中发送属性

Cant send attribute in onclick in description of pushpin in bing maps

我有一张带有 bing 地图的地图和一些具有 html 描述的图钉。我想当我点击这个描述(它是一个列表)时,调用一个外部函数。此函数用于创建 HTML 说明:

_getDescription = function (actions) {
    var description = "<div><ul class='action'>";
    actions.forEach(function (action) {
        description += '<li onclick="showOrderModal(action)"><strong>' + action.address.info.code + "</strong><br><span>" + action.address.info.address_for_pushpin + "</span>"
    })
    description += "</li></ul></div>"
    return description;
}

有了这个我设置html我的描述内容:

$scope.pinInfobox.setOptions({
        // title: e.target.Title,
        htmlContent: e.target.Description,
        visible:true,
        offset: new Microsoft.Maps.Point(0,25)
    });

我有 showOrderModal() 功能,当我点击列表中的一个项目时,它显示:

"Uncaught ReferenceError: action is not defined"

您看到的错误是有道理的。您有一个名称为 属性 的 HTML 字符串,但 属性 没有实际的 link。在这个字符串中:

'<li onclick="showOrderModal(action)"><strong>'

action 只不过是一个字符串。当有人点击列表项时,操作值是未定义的,因为没有本地值。您需要做的是包含一些基本信息,这些信息可用于检索您想要的操作信息。也许将动作数组存储在某处并将动作的索引传递到每个列表项的 showOrderModal 中。例如:

var currentActions;

_getDescription = function (actions) {
    currentActions = actions;

    var description = "<div><ul class='action'>";
    actions.forEach(function (action, idx) {
        description += '<li onclick="showOrderModal('+ idx + ')"><strong>' + action.address.info.code + "</strong><br><span>" + action.address.info.address_for_pushpin + "</span>"
    })
    description += "</li></ul></div>"
    return description;
}

function showOrderModal(idx){
    var action = currentActions[idx];

    //Do what ever you were doing before with the action.
}