конфликт подстановки переменных между mako и Openlayers

Я использую шаблоны mako в пирамиде, которая использует конструкцию ${} для подстановки переменных. Я также использую скрипт Openlayers, чтобы показать карту с функциями. Я хочу стилизовать свои функции с помощью Stylemap следующим образом:

var symbolizer = OpenLayers.Util.applyDefaults(
    {externalGraphic: "images/${thumbnail}.png", pointRadius: 20},
    OpenLayers.Feature.Vector.style["default"]);
var styleMap = new OpenLayers.StyleMap({"default": symbolizer, "select": {pointRadius: 30}});
var vectorLayer = new OpenLayers.Layer.Vector("thumbs", {styleMap: styleMap});
...
vectorLayer.features[0].attributes.thumbnail="sight";
vectorLayer.features[1].attributes.thumbnail="bar";

См. также Структура стилей OpenLayers.

У меня проблема в том, что mako интерпретирует переменную Openlayers ${} как свою собственную переменную, и я получаю от сервера "NameError: Undefined". Я искал некоторое время, но не смог найти решение.


person Adrian    schedule 18.05.2011    source источник


Ответы (2)


Насколько я помню, вы можете использовать двойной знак доллара, чтобы избежать его:

"images/$${thumbnail}.png"

ХТХ,

РЕДАКТИРОВАТЬ: Да, кажется, я был неправ, см. https://groups.google.com/forum/#!topic/mako-discuss/g00Qq3_FNgg

person tonio    schedule 18.05.2011
comment
Спасибо, Тонио, это немного неудобно, но это работает: {externalGraphic: ‹%text›images/${thumbnail}.png‹/%text›, pointRadius: 20}. Однако $${} не работает. Тем не менее интересно, если кто-то знает более красивое решение. - person Adrian; 18.05.2011

Самое краткое решение, которое я нашел, было следующим:

  • "images/$${}{thumbnail}.png"

Для полноты в сообщении, упомянутом Тонио, есть:

  • "images/‹%text>${миниатюра}.png"
  • "images/${"$"}{миниатюра}.png"
person user1372408    schedule 04.12.2012