Dom 从信号Int中获取Int值

Dom 从信号Int中获取Int值,dom,elm,Dom,Elm,我在将Int值从窗口中取出时面临问题。维度的返回值-信号Int view : Signal.Address Action -> Model -> Html view address model = let wx = Signal.map fst Window.dimensions wy = Signal.map snd Window.dimensions in fromElement <| container wx wy middle <| to

我在将
Int
值从
窗口中取出时面临问题。维度
的返回值-
信号Int

view : Signal.Address Action -> Model -> Html
view address model =
  let wx = Signal.map fst Window.dimensions 
      wy = Signal.map snd Window.dimensions  
  in fromElement <| container wx wy middle <| toElement  100 100 <|
      div []
        [ button [ onClick address Decrement ] [text "-"]
        ]

Window.dimensions
是一个
信号(Int,Int)
。使用
fst
snd
对其进行映射将为您提供一个
信号Int
,您无法仅从中获取“值”


您的
视图
中根本不应该有
信号
。它应该只是在中获取一些状态并返回一些
Html
。如果要制作与屏幕尺寸相同的
容器
,最好让
视图
函数获取宽度/高度,然后将视图函数映射到
窗口。尺寸
。你可以举个例子。

嘿,谢谢你,罗伯特。。但是我的主要方法代码基于
StartApp.Start
,它接受
模型、视图和更新
参数。您给出的图形示例不是基于mvc模式的。我想知道,即使我使用
main=Signal.map
它也只会听那些
窗口的信号,而不会听用户的点击……如果你想开始向你的视图传递更多参数,那么听起来你的程序可能已经长大了
StartApp
:-P是时候写你自己的
main
!哎呀。。那有点讽刺。。安威,我的想法是有一个额外的
动作
作为
调整大小
,就像
递增
/
递减
一样,并从视图函数内部从
调整大小
触发动作……您可以将屏幕尺寸放入模型中,并以相同的方式触发更新
递增
/
递减
,但是在初始化模型以传递到
StartApp.start
时,您必须猜测初始屏幕尺寸。因此,如果屏幕尺寸从未改变,视图将永远不会居中
Type mismatch between the following types on line 30, column 31 to 33:
        Signal.Signal In
        Int
    It is related to the following expression:
        wx