微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Elm create-elm-app 错误:初始化时给 Elm 程序的标志有问题 Json.Decode.oneOf 以以下两种方式失败

如何解决Elm create-elm-app 错误:初始化时给 Elm 程序的标志有问题 Json.Decode.oneOf 以以下两种方式失败

我正在开发一个 elm 应用程序,当我尝试将 <q-form class="q-gutter-md"> <q-list> <q-item> <q-item-section> <q-item-label class="q-pb-xs">Tên thiết bị</q-item-label> <q-input dense outlined v-model="device.device_name" label="Name" /> </q-item-section> </q-item> <q-item> <q-item-section> <q-item-label class="q-pb-xs">Loại thiết bị</q-item-label> <q-select outlined v-model="option_1" :options="options_type" label="Type" /> </q-item-section> </q-item> <q-item> <q-item-section> <q-item-label class="q-pb-xs">Thời gian an toàn</q-item-label> <q-input dense outlined v-model="device.safe_time" label="Time" /> </q-item-section> </q-item> </q-list> <q-card-actions align="right" class="text-teal"> <q-btn label="ADD" color="primary" @click="addData" type="submit" v-close-popup /> </q-card-actions> </q-form> 更改为除 Model 以外的任何内容时,我收到错误

{}

错误重现here

解决方法

错误是因为 init 期望 Maybe Model 但在 Ellie 的 HTML 部分中,您没有传入标志。

有两个选项,您可以处理标志,或者删除标志。

继续解析标志: 您需要将 Elm.Main.init({ node: document.querySelector('main') }) 更改为

var app = Elm.Main.init({
  node: document.querySelector('main'),flags: <some value>
});

通常也建议将您的标志更改为 Json.Decode.Value 并手动对其进行解码 所以你的 init 会变成

init : Value -> ( Model,Cmd Msg )
init flags =
  case Json.Decode.decodeValue flagDecoder flags of
    Ok decodedFlags -> ...
    Err err -> ...

这样您就可以处理无效或丢失的标志。

移除标志解析

我们常用的单位类型是()。 所以你的主要变成了

main : Program () Model Msg

init 变成

init : () -> ( Model,Cmd Msg )

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。