У меня есть список географических координат в моем приложении, хранящийся в файле Vars[Coordinates]
. Теперь я хотел бы отображать их на карте и автоматически обновлять карту, когда новые координаты добавляются в список или удаляются из него. Я использую библиотеку, которая предоставляет API для добавления и удаления маркеров на карте, поэтому я хотел бы вызывать их при обновлении списка, но я не могу найти никакого очевидного способа сделать это. Любые подсказки о том, как этого добиться?
edit: Спасибо @ Ян Бо за ответ! Я закончил с чем-то вроде этого:
val coordinates = Vars.empty[Coordinates]
def mapMountPoint(parent: Element, coordinates: BindingSeq[Coordinates]) =
new MultiMountPoint[Coordinates](coordinates) {
… // method overrides here to create the map in parent
}
@dom
def map = {
val e = <div></div>
mapMountPoint(e, coordinates).bind
e
}
Кажется, это работает, методы монтирования и размонтирования вызываются, когда div рендерится или удаляется из DOM… Но действительно ли это так и должно быть? Это выглядит немного странно, и я также получаю предупреждение компилятора, когда я вызываю .bind
: a pure expression does nothing in statement position; multiline expressions might require enclosing parentheses
.
В библиотеке monadic-html есть довольно элегантный способ сделать это:
<canvas mhtml-onmount={ e => crazyCanvasStuff(e) }></canvas>
Существует также соответствующий атрибут mhtml-onunmount для очистки.
MultiMountPoint
похоже на редко используемую функцию а>. Вы действительно думаете, что стоит выделить для этого специальный синтаксис? - person Yang Bo   schedule 21.03.2018<canvas id="my_canvas" data:dummy_attribute={ crazyCanvasStuff(my_canvas, coordinates.all.bind); "dummy_value" }></canvas>
- person Yang Bo   schedule 22.03.2018MultiMountPoint
может быть более эффективным, чемcoordinates.all.bind
, посколькуMultiMountPoint
поддерживает частичное обновление. - person Yang Bo   schedule 22.03.2018.bind
, а затем нигде не использовать его возвращаемое значение. Это не только выглядит странно, но и приводит к предупреждению компилятора, от которого я не знаю, как избавиться. - person Matthias Berndt   schedule 22.03.2018