I'm attempting to add a control to turn the subscription on and off in the elm time example. The problem is that I can't get html and svg to coexist in the view.
So far, I have this for the view:
import Html exposing (Html)
import Html.App as Html
import Html.Attributes exposing (..)
import Html.Events exposing (..)
import Svg exposing (..)
import Svg.Attributes exposing (..)
import Time exposing (Time, second)
-- MODEL, UPDATE and SUBSCRIPTION removed for brevity
-- VIEW
view : Model -> Html Msg
view model =
Html.div []
[ Html.p [] [ text "hello world" ]
, clock
]
clock : Model -> Html msg
clock model =
let
angle =
turns (Time.inMinutes model.time)
handX =
toString (50 + 40 * cos angle)
handY =
toString (50 + 40 * sin angle)
in
svg [ viewBox "0 0 100 100", Svg.Attributes.width "300px" ]
[ circle [ cx "50", cy "50", r "45", fill "#0B79CE" ] []
, line [ x1 "50", y1 "50", x2 handX, y2 handY, stroke "#023963" ] []
]
However, I get the following message when I try to transpile:
Detected errors in 1 module.
==================================== ERRORS ====================================
-- TYPE MISMATCH ------------------------------------------ examples/6-clock.elm
The 1st and 2nd elements are different types of values.
70| [ Html.p [] [ text "hello world" ]
71|> , clock
72| ]
The 1st element has this type:
VirtualDom.Node a
But the 2nd is:
Model -> Html a
Hint: All elements should be the same type of value so that we can iterate
through the list without running into unexpected values.
In addition to fixing the error, is there a way to fix the problem of not having to prepend Html
to all the html elements? e.g. Html.div
as opposed to the usual div
.
clock
is a function that receives a Model
and returns some Html
.
As the compiler is telling you, you'll need to have an Html
element inside your view
. It should be enough to pass the model
to the clock
function, like
view model =
Html.div []
[ Html.p [] [ text "hello world" ]
, clock model
]
To be able to use directly div
instead of Html.div
you could import their definition using
import Html exposing (Html, div, p)
and so on, or, if you want to import all the Html
package
import Html exposing (..)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With