当前位置: 首页 > 知识库问答 >
问题:

Elm 0.17-JSON数据不在视图中渲染

韩善
2023-03-14

我是Elm的新手,正在尝试计算0.17。我想知道是否有人知道为什么我的数据没有呈现在这里的视图中。在Chrome控制台中,我可以看到GET请求已成功发出,但它从未真正显示在页面上。我从URL返回的数据应该是这样的:

[{“title”:“Aut enim quia accusamus.”,“content”:“Ipsa aliquid disependedus laudantium velit。Voluptates corruption qui ut aut aut aut repudiandae。Ipsum molestiae ullam quasi molestiae qui quas。Error nobis cupiditate dolor molestiae officia qud doloribus。”,{“title”:“建筑师应承担的责任”,

module Questions exposing (..)

import List
import Html exposing (..)
import Html.App
import Html.Attributes exposing (..)
import Html.Events as Events
import Http
import Json.Decode as Json exposing ((:=))
import Task exposing (..)

main : Program Never
main =
  Html.App.program
    { init = init
    , update = update
    , view = view
    , subscriptions = \_ -> Sub.none }

--MODEL

type alias Question =
  { title : String
  , content : String }

type alias Model =
  { questions : List Question
  }

initialModel : Model
initialModel =
  { questions = []
  }

questionsDecoder : Json.Decoder (List Question)
questionsDecoder =
  Json.list questionDecoder

questionDecoder : Json.Decoder Question
questionDecoder =
  Json.object2
        Question
          ("title" := Json.string)
          ("content" := Json.string)

fetchData : Cmd Msg
fetchData =
  let
    url = "http://localhost:3000/api/questions"
  in
    Task.perform FetchFail FetchDone (Http.get questionsDecoder url)

--INIT

init : ( Model, Cmd Msg )
init =
  ( initialModel
  , fetchData )

--UPDATE

type Msg = NoOp
    | FetchData
    | FetchDone (List Question)
    | FetchFail Http.Error

update : Msg -> Model -> (Model, Cmd Msg)
update message model =
  case message of
    NoOp ->
      ( model, Cmd.none )
    FetchData ->
      ( model, fetchData)
    FetchDone results ->
      ( { model | questions = results }
      , Cmd.none )
    FetchFail error ->
      ( model, Cmd.none )

-- VIEW

questionView : Model -> Question -> Html Msg
questionView model question =
  div [ ]
    [ h3 [  ] [text question.title]
    , h5 [  ] [text question.content]
    ]

questionsListView : Model -> Html Msg
questionsListView model =
  ul [ ]
    (model.questions |> List.map (questionView model))

view : Model -> Html Msg
view model =
  div [ ]
    [ h1 [  ] [text "SLACK OVERFLOW"]
    , questionsListView initialModel
    ]

谢谢你的帮助!

共有1个答案

柯翔
2023-03-14

在您的视图中,似乎总是传递初始模型:

view : Model -> Html Msg
view model =
  div [ ]
    [ h1 [  ] [text "SLACK OVERFLOW"]
    , questionsListView initialModel
    ]

我想您希望获得作为参数接收的模型:

view : Model -> Html Msg
view model =
    div [ ]
        [ h1 [  ] [text "SLACK OVERFLOW"]
        , questionsListView model
        ]
 类似资料:
  • 渲染某个变量 假定我们定义了一个变量:  <script> export default { data () { return { my_value: '默认值', } }, } </script> 我们就可以这样来显示它:  <div>{{my_value}}</div> 方法的声明和调用 声明一个方法: show_my_value <script> ex

  • Blade 内部内置了一个非常简单的模板渲染引擎,如果你有一些简单的页面需要渲染可以试试它(生产环境不适用)。 渲染一个模板需要遵守一条准则: 所有的模板文件都存储在 resources/templates 目录下 你可以调用 Response 方法的 render 方法渲染或者返回一个 String 类型的视图路径。 @GetRoute("/index") public void renderI

  • 因为新版的控制器可以无需继承任何的基础类,因此在控制器中如何使用视图取决于你怎么定义控制器。 模板渲染 渲染模板最常用的是控制器类在继承系统控制器基类(\think\Controller)后调用fetch方法,调用格式: fetch('[模板文件]'[,'模板变量(数组)']) 模板文件的写法支持下面几种: 用法 描述 不带任何参数 自动定位当前操作的模板文件 [模块@][控制器/][操作] 常用

  • 我必须在窗口对象中存储一些数据,以便在前端渲染中使用它。我有一个模型: 我有一个观点: 我想检索作为JSON对象并将其存储在对象中: 但我得到了这样的回答: 有人知道我做错了什么吗? 谢啦! 编辑: 我只是按照André Laszlo的建议尝试了< code>return list(context):它返回 但是如果我使用: 似乎很管用。我将阅读有关“list()”的文档。

  • 我知道以前有人问过这个问题,但即使在仔细阅读了各种帖子,包括Balus的优秀答案“h:commandLink/h:commandButton未被调用”“侦听并调试JSF生命周期阶段”之后,我仍然无法理解为什么我不能在我的选项卡中呈现JSF页面。 我在CSS选项卡“规则”下有一个PrimeFaces选项卡“规则管理”,它成功地显示了以下Jsf文件RuleAdmin2。xhtml。在该页面中,我有一个

  • 问题内容: 我正在AngularJS中构建仪表板系统,但遇到通过设置URL的问题 在我们的仪表板中,我们有一堆小部件。单击它们时,每个视图都会显示一个更大的最大化视图。我们正在尝试设置深层链接,以允许用户使用最大化的小部件链接到仪表板。 目前,我们有2条路线看起来像和 当用户最大化窗口小部件时,我们使用来更新url ,但这会导致视图重新呈现。由于我们拥有所有数据,因此我们不想重新加载整个视图,我们