ELM обновить два поля в модели - PullRequest
0 голосов
/ 17 ноября 2018

Как я могу обновить два поля в модели одновременно? Теперь у меня есть запрос, который возвращает мне псевдоним с {price: Float, productId: Int} Мне нужно обновить два поля в модели, как model.price и model.productId

Я ищу что-то подобное, но это не работает (ofc)

    case maybeProduct of
        Just product ->
       ( { model | price = product.price && 
           model | productId = product.productId}
            , Cmd.none
            )
        Nothing ->
            ( model
               , Cmd.none
             )

Я нашел некоторую информацию, где совет, что я могу создать две функции (Модель -> Продукт -> Модель) и сделайте что-то вроде:

setPrice : Model -> Product -> Model
setPrice model product =
    { model | price = product.price }

setProductId : Model -> Product -> Model
setProductId model product =
    { model | companyId = product.productId }

                Just product ->
                        let
                            newModel =
                                product
                                    |> setPrice model
                                    |> setProductId model
                        in
                        ( newModel
                        , Cmd.none
                        )
                    Nothing ->
                        ( model
                           , Cmd.none
                         )

но что-то не работает. Похоже, что продукт не передается в каждой функции

я получаю

Аргумент:

Model

Но (|>) передает ему функцию, которая ожидает:

{ companyId : Int, price : Float }

Где я ошибаюсь? Или, может быть, есть другой способ обновить два поля в модели?

1 Ответ

0 голосов
/ 17 ноября 2018

Как обновить два поля одновременно:

Сделайте что-то подобное (кстати, это исключает команды - вы можете добавить их в соответствии с вашими требованиями):

{ model | price = new_price, productId = newProductId}

(я просто изучаю ELM, так что apol's, если это неверно).

Документация:

Вот ссылка, которую @JackLeow очень любезно разместил: https://elm -lang.org / docs / records # update-records

...