2016-06-29 4 views
0

私は、彼らがhtmlの記述を持っているいくつかの押された状態でbingマップを持つマップを持っています。私はこの記述をクリックすると(それはリストです)、外部関数を呼び出したいと思います。私は、リストの項目をクリックしたときに、それが言うbingマップの押されの説明でonclickの属性を送信する

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

私はshowOrderModal()機能を持っている:私は私の説明をhtmlContentを設定これで

_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の記述を作成するためのものです

"Uncaught ReferenceError: action is not defined"

答えて

1

あなたが見ているエラーは意味があります。プロパティの名前を持つHTML文字列がありますが、プロパティへの実際のリンクはありません。この文字列で:

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

アクションは、文字列以外の何ものでもありません。誰かがリストアイテムをクリックすると、ローカル値がないため、アクション値は未定義です。あなたがしなければならないことは、アクションのために必要な情報を取得するために使用できる基本情報を含めることです。おそらくアクションの配列をどこかに格納し、アクションのインデックスを各リスト項目の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. 
} 
+0

ありがとうございます!!!!!私のコードは走っています! :) – oihi08

+0

今、私は "showOrderModal"コードをイオンとモーダルを表示するために入れて、私はそれを閉じると、別の押さえをクリックすると正しく動作しません。それは "showOrderModal" @ rbrundritt – oihi08

+0

プッシュピンまたはリストアイテムには行かないのですか?上記のコードはリスト項目のみです。プッシュピンにクリックイベントを追加することについては、コードを提供していません。 – rbrundritt

関連する問題