Я пытаюсь динамически переключаться между приложениями Elm на основе пользовательского ввода.
Оба приложения передаются в js-файлах через elm make
(например, модуль Foo.js, представляющий модуль Foo, и модуль Bar.js, представляющий Bar)
Две кнопки запускают обычный "Elm. [Foo| Bar] .init (node: document.querySelector ('main') ", чтобы теоретически я мог переключаться между рендерингом любого из приложений.
<html>
<head>
<script src="[..]/foo.js"></script>
<script src="[..]/bar.js"></script>
</head>
<body>
<main></main>
<input value="Foo" type="button" name="Foo" onclick="Elm.Foo.init({node:document.querySelector('main')});">
<input value="Bar" type="button" name="Bar" onclick="Elm.Bar.init({node:document.querySelector('main')});">
</body>
</html>
Чтобы было ясно, оба приложения должны чередоваться в принятииповерх элемента.
Когда я нажимаю одну из кнопок в первый раз, приложение отображается правильно, но второй щелчок вызывает следующую ошибку
Error: What node should I take over? In JavaScript I need something like:
Elm.Main.init({
node: document.getElementById("elm-node")
})
You need to do this with any Browser.sandbox or Browser.element program.
И действительно, элемент каким-то образомудалено при рендеринге первого приложения.
Я не смог найти упоминаний об этом поведении в документации и хотел бы знать, возможно ли предотвратить это каким-либо образом, и ожидается ли это поведение.
Заранее спасибо