我遇到了类似于这个未回答的问题的困难:Purescript: Halogen HTML DSL only Renders "id" tags
我正在尝试定义一个新的HTML元素。特别是,我想用一些新的标记来显示svg elem和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似乎与它有关,但是,我不知道如何找到已经构造的元素的命名空间。
发布于 2017-01-18 11:33:39
如果要设置的属性不是标记的javascript属性,则需要使用attr而不是prop来定义它们。例如,"class“属性称为className属性,因为这是它的名称 interface。
https://stackoverflow.com/questions/41711307
复制相似问题