Purescript Halogen: определение пользовательских элементов HTML

У меня возникли трудности, связанные с этим вопросом без ответа: Purescript: галоген HTML DSL только отображает теги "id"

Я пытаюсь определить новый элемент HTML. В частности, я хотел бы отобразить svg Элем и image элемент с некоторыми новыми тегами, как x_, а также y_,

Я определяю элемент следующим образом:

image :: forall p i. Array (Prop i) -> Array (HTML p i) -> HTML p i
image xs = element (tagName "image") xs

image_ :: forall p i. Array (HTML p i) -> HTML p i
image_ = image []

А потом атрибуты мне бы хотелось:

image :: forall p i. Array (Prop i) -> Array (HTML p i) -> HTML p i
image xs = element (tagName "image") xs

image_ :: forall p i. Array (HTML p i) -> HTML p i
image_ = image []

Когда я создаю элемент, программа компилирует, но только <image></image> теги отображаются без указанных атрибутов. Кажется, как галоген взаимодействует с virtual-dom не позволяет мне сделать это, однако, я не уверен, почему.

В общем, почему я не могу просто добавить какие-либо атрибуты в div, svg, или же image элемент? Я не пользуюсь Halogen.HTML.Indexed для любого из этих элементов. Это проблема? Является ли средство проверки типов просто отсутствующим фактом, что эти комбинации не разрешены, потому что я их не указал??

В общем, я хотел бы сделать что-то вроде:

customProperty :: forall i. String -> String -> Prop i
customProperty p = prop (propName p) (Just $ attrName p)

а затем позвоните

image [ customProperty "myProperty" "myPropertyValue" ] []

и получить этот атрибут.

========================

Изменить: чтение исходного кода, кажется, что namespace как-то связано с этим, однако я не уверен, как найти пространство имен уже созданного элемента.

1 ответ

Решение

Если атрибуты, которые вы пытаетесь установить, не являются свойствами тега javascript, вам необходимо использовать attr скорее, чем prop определить их. Например, атрибут "класс" называется className как свойство, так как это имя в Element интерфейс

Другие вопросы по тегам