Всплывающее окно листовки очищает содержимое при первом закрытии

для моего приложения я использую Leaflet, и я продвинулся с ним довольно далеко, поэтому я уверен, что понял «способ листовки» для достижения цели.

Поскольку у меня есть только один статический макет для всех моих маркеров, я создал простой шаблон Mustache, который вставляет переменные данные и дает мне мой HTML:

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 и установил _content, привязанный к моему HTML-коду. Но я не уверен, что он немного перегружен.

Большое спасибо за твою помощь,

Стефан


person Stephan    schedule 21.03.2014    source источник


Ответы (1)


Хорошо, я наконец нашел точку, где это не удалось:

can.view возвращает DocumentFragment, который работает в исходной сборке.

В источнике L.Popup я нашел строку кода, где они сопоставляют тип со строкой — DocumentFragment обрабатывается как объект.

Я решил это, используя can.view.render("leads/popup", viewOptions), который возвращает мне строку с визуализированным HTML.

person Stephan    schedule 21.03.2014