2016-06-29 4 views
0

Ich habe eine Karte mit Bing Maps mit einigen PIN, die sie HTML-Beschreibung haben. Ich möchte, wenn ich in diese Beschreibung klicke (es ist eine Liste), eine externe Funktion aufrufen. Diese Funktion ist für die HTML-Beschreibung erstellen:Cant senden Attribut in Onclick in Beschreibung der PIN in Bing Karten

_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; 
} 

Damit ich htmlcontent mit meiner Beschreibung aufgeführt:

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

Ich habe showOrderModal() Funktion und wenn ich in einem Artikel in der Liste klicken, heißt es:

"Uncaught ReferenceError: action is not defined"

Antwort

1

Der Fehler, den Sie sehen, macht Sinn. Sie haben eine HTML-Zeichenfolge mit dem Namen einer Eigenschaft, aber keine tatsächliche Verknüpfung mit der Eigenschaft. In dieser Zeichenfolge:

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

Aktion ist nichts anderes als eine Zeichenfolge. Wenn jemand auf das Listenelement klickt, ist der Aktionswert nicht definiert, da kein lokaler Wert dafür vorhanden ist. Sie müssen einige grundlegende Informationen angeben, die zum Abrufen der gewünschten Informationen für die Aktion verwendet werden können. Vielleicht speichern Sie das Array von Aktionen irgendwo und übergeben Sie den Index der Aktion in den showOrderModal jedes Listenelements. Zum Beispiel:

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. 
} 
+0

Vielen Dank !!!!! Mein Code läuft! :) – oihi08

+0

Jetzt habe ich "showOrderModal" -Code eingefügt, um ein Modal mit ionischen zu zeigen, und wenn ich es schließe, wenn ich in einen anderen PIN klicke, funktioniert es nicht richtig. Es geht nicht zu "showOrderModal" @rbrundritt – oihi08

+0

Reißzwecke oder Listenelement? Der obige Code gilt nur für die Listenelemente. Sie haben keinen Code zum Hinzufügen von Klickereignissen zu Push-Pins bereitgestellt. – rbrundritt

Verwandte Themen