2

我正在使用purescript-halogen v0.12.0,但我无法弄清楚为什么只有id标签在渲染。

即使使用据称支持良好的元素也会发生这种情况,例如div.

例子:

render = div [ id_ "some-id", name "some-name ] []

将创建一个 div,但仅具有一个id属性。这发生在 和 中的元素Halogen.HTMLHalogen.HTML.Indexed

任何正确方向的帮助将不胜感激。

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

重现以下问题。

pulp init
bower i purescript-halogen
npm i virtual-dom

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

module Main where

import Prelude
import Control.Monad.Eff (Eff)
import Control.Monad.Eff.Console (CONSOLE, log)

import Halogen as H
import Halogen.HTML (div, text)
import Halogen.HTML.Properties (id_, name, pixels, height, width)
import Halogen.Util (awaitBody, runHalogenAff)

type State = Int
data Query a = Toggle a

ui :: forall g. (Functor g) => H.Component State Query g
ui = H.component { render, eval }
  where
    render :: State -> H.ComponentHTML Query
    render st = div [ id_ "my-id", name "my-name", height (pixels 3), width (pixels 4) ] [ text "here!" ]

    eval :: Query ~> H.ComponentDSL State Query g
    eval (Toggle next) = pure next

main :: forall e. Eff (H.HalogenEffects e) Unit
main = runHalogenAff $ do
  body <- awaitBody
  H.runUI ui 0 body
4

1 回答 1

1

发生这种情况是因为nameis not a valid property to apply to a div,or are widthor height- 如果您使用Indexed元素和属性,您会在尝试设置widthor时看到类型错误height。尝试更改divfor an input,您将看到应有的属性应用。

但是,索引元素确实允许name在 the 上设置 a div,这是一个错误。

这些属性未显示在呈现的 HTML 中的原因是它们被设置为属性而不是属性。属性必须存在于元素的 javascript 接口中,否则将被忽略。这与其说是 DOM 不如说是卤素。

于 2017-01-18T11:47:46.293 回答