1

私のアプリでは Leaflet を使用していますが、かなり使いこなしたので、物事を成し遂げる「リーフレットの方法」を理解したと確信しています。

すべてのマーカーに対して 1 つの静的レイアウトがあるため、変数データを挿入して HTML を提供する単純な Mustache テンプレートを作成しました。

can.view("leads/popup", viewOptions)

これは期待どおりに機能し、適切に表示される HTML 文字列になります。

しかし、ポップアップを閉じて再度開くと、空のポップアップ コンテンツが表示されます。

var popup = L.popup({maxWidth: 1000, closeOnClick: true}, marker);
popup.setContent(can.view("leads/popup", viewOptions));

var marker = L.marker(L.latLng(lng, lat),
  {icon: L.divIcon({
    className: 'lead-icon lead_'+lead._id.$oid,
    iconSize: [size, size],
    html: '<span class="marker-label">' + label + '</span>'
  })
});

marker.bindPopup(popup);
self.displayMarker(marker);

私が考えたのは、L.Popup クラスを拡張し、HTML コードに固定された _content を設定することでした。しかし、それが少し圧倒されていないかどうかはわかりません。

ご協力ありがとうございました。

ステファン

4

1 に答える 1

1

わかりました、ついに失敗したポイントを見つけました:

can.view初期ビルドで動作するように見える DocumentFragment を返します。

L.Popupソースで、型と文字列が一致するコード行を見つけました - DocumentFragment はオブジェクトとして処理されます。

を使用して解決しましたcan.view.render("leads/popup", viewOptions)。これは、レンダリングされた HTML を含む文字列を返します。

于 2014-03-21T11:48:31.890 に答える