Date 使用当前日期初始化模型
我正在尝试用当前日期初始化模型。我不想使用本机模块。我试着用任务和效果来做。我被我的Date 使用当前日期初始化模型,date,time,elm,Date,Time,Elm,我正在尝试用当前日期初始化模型。我不想使用本机模块。我试着用任务和效果来做。我被我的getCurrentTime方法卡住了。最干净的方法是什么 import Time exposing ( Time ) import StartApp import Task import Effects exposing (Never) import Html exposing ( Html ) app = StartApp.start { init = init , view = vi
getCurrentTime
方法卡住了。最干净的方法是什么
import Time exposing ( Time )
import StartApp
import Task
import Effects exposing (Never)
import Html exposing ( Html )
app =
StartApp.start
{ init = init
, view = view
, update = update
, inputs = []}
main =
app.html
port tasks : Signal (Task.Task Never ())
port tasks =
app.tasks
type alias Model =
{ clock : Time}
init : (Model, Effects.Effects Action)
init = ((Model ), Effects.none)
type Action = ShowClock
update : Action -> Model -> (Model, Effects.Effects Action)
update action model =
case action of
ShowClock c ->
({ model | clock = c}, Effects.none)
getCurrentTime : Effects.Effects Action
getCurrentTime =
-- stuck here
|> Task.map ShowClock
|> Effects.task
view : Signal.Address Action -> Model -> Html
view address model =
Signal.map Html.text model.clock
还可以将时间转换为“YYYY-MM-DD”格式的字符串。如果我们只想在程序开始时传递初始值,我们可以使用端口: 因此,我们要将其添加到包含main的应用程序中: …然后我们必须将以下内容添加到html中,以便为elm程序提供正确的初始值
var myapp = Elm.fullscreen(Elm.YourAppNameHere,
{
time: Date.now()
});
elm语言网站上的互操作文档合理地涵盖了这一点,并链接到其他几个示例:
或者,您可以从Signal.Extra库中尝试
foldp'
,该库会更明确地公开初始值 您可以使用ELM软件包获取当前时间
首先,您需要下载它并在终端或Windows命令中使用以下命令更新elm-package.json文件:
elm-package install evancz/task-tutorial 1.0.3
然后更新您的代码:
getCurrentTime : Effects.Effects Action
getCurrentTime = Effects.task <| Task.map ShowClock ( TaskTutorial.getCurrentTime )
html部分让我感到困惑,因为我用ELM在view方法中编写html。我该怎么做?这个要点:从interop页面链接到,并解释如何在html中嵌入elm(全屏函数的行为类似于
embed
,只是它不需要目标元素,因为它将整个页面用作elm应用程序)我不想在html中嵌入elm。一定还有别的办法,我会继续找的。:)
getCurrentTime : Effects.Effects Action
getCurrentTime = Effects.task <| Task.map ShowClock ( TaskTutorial.getCurrentTime )
toHRDate : Time -> String -- to human readable date
toHRDate t =
let
date = Date.fromTime t
d = toString (Date.day date) -- day
m = toString (Date.month date) -- month
y = toString (Date.year date) -- year
hrd = d ++ "-" ++ m ++ "-" ++ y
in hrd