Как удалить и вывести новую строку в текстовое поле? - PullRequest
0 голосов
/ 20 февраля 2019

Я хочу очистить текстовое поле и хочу создать новый заполнитель при нажатии кнопки.Кроме того, я хочу прирост заполнителя, который подсчитывает каждое новое текстовое поле, которое создается (игрок 1, игрок 2, игрок 3 и т. Д.). Я пытался использовать кнопку «Увеличение» из документов вяза.Но я получаю сообщение об ошибке:

Something is off with the 5th branch of this `case` expression:

78|       model "Player" + 1
          ^^^^^^^^^^^^^^^^^^
The 5th branch is:

    number

But the type annotation on `update` says it should be:

    Model

Я пытался создать новый струнный плеер, который добавляет каждый раз, когда кнопка «+ add» нажимается +1.Так что с событием onClick + имя (Очистить), как это также делается в документах.

Вот мой код вяза:

--imports
...

-- MAIN


main =
  Browser.sandbox { init = init, update = update, view = view }



-- MODEL
type alias Player =
  { player : String
  , strength : Int
  , number : Int
  }


type alias Model =
  { content : String
  , teams : List Player
  , currentNumber : Int
  , currentPlayer : String
  , currentStrength : Int
  }





init : Model
init =
  { content = ""
  , teams = []
  , currentNumber = 0
  , currentPlayer = ""
  , currentStrength = 0
   }



-- UPDATE


type Msg
  = Change String
  | Clear



update : Msg -> Model -> Model
update msg model =
  case msg of
    Change newContent ->
      { model | content = newContent }

    Clear ->
      model "Player" + 1

-- VIEW

view : Model -> Html Msg
view model =
  div []
    [ h1 [style "font-family" "impact"] [ text "Team Creator" ]
    ,  h2 [style "font-family" "impact"] [ text "Name and Strength:" ]
    , div[] [ input [ placeholder  "? Player 1", style "width" "300px"] [] ]
    , input [ placeholder  "?? Strength", style "width" "300px"] []
    , div [] [ button [ style "background-color" "#66cc81", style "color" "white", onClick Clear] [ text "+ADD" ] ]
    ,  h2 [style "font-family" "impact"] [ text "Teams:" ]
    , div [] [ text (model.currentPlayer)]
    ]

1 Ответ

0 голосов
/ 20 февраля 2019

Как говорится в сообщении об ошибке, вы возвращаете тип String из функции, которая возвращает Model по сигнатуре типа.Проблема в этой строке

  Clear ->
    model "Player" + 1

Немного неясно, что это должно делать, но в приведенном выше выражении кода создается новая модель, в которой выполняется обновление content = newContent.Если вы хотите обновить какое-то другое поле в модели, вам нужен аналогичный шаблон.Например (не уверен на 100% в синтаксисе, но, надеюсь, вы поймете идею)

  Clear ->
    { model | currentNumber = currentNumber + 1 }
...