miércoles, 28 de septiembre de 2016

Campos de Texto en Elm

| No comment

 

Campos de Texto

Estamos a punto de crear una aplicación sencilla que invierte el contenido de un campo de texto. Este ejemplo también introduce algunas cosas nuevas que nos ayudará en nuestro siguiente ejemplo.
De nuevo, este es un programa muy corto, por lo que he incluido todo aquí. Puedes hacer una lectura rápida para tener una idea de cómo es todo.
import Html exposing (Html, Attribute, div, input, text)
import Html.App as App
import Html.Attributes exposing (..)
import Html.Events exposing (onInput)
import String


main =
  App.beginnerProgram { model = model, view = view, update = update }


-- MODEL

type alias Model =
  { content : String
  }

model : Model
model =
  { content = "" }


-- UPDATE

type Msg
  = Change String

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


-- VIEW

view : Model -> Html Msg
view model =
  div []
    [ input [ placeholder "Text to reverse", onInput Change ] []
    , div [] [ text (String.reverse model.content) ]
    ]
Se configura un modelo. Se definen algunos mensajes. Usted dice que la forma de actualizar update. Usted hace su vista view. La diferencia es sólo en la forma en que nos llena este esqueleto.
Como siempre, se empieza por adivinar lo que debe ser su Model. En nuestro caso, sabemos que vamos a tener que hacer un seguimiento de lo que el usuario ha introducido en el campo de texto. Necesitamos que la información así que sabemos cómo representar el texto invertido.
type alias Model =
  { content : String
  }

Esta vez he elegido para representar el modelo como un registro.
Nota: Es posible que se esté preguntando, ¿por qué molestarse en tener un registro aunque sólo tenga una entrada? ¿No podrías utilizar la cadena directa? ¡Si por supuesto! Pero a partir de un registro hace que sea fácil agregar más campos como nuestra aplicación se vuelva más complicada. Cuando llegue el momento en que queremos dos entradas de texto, vamos a tener que hacer mucho menos.
Está bien, así que tenemos nuestro modelo. Ahora en esta aplicación sólo hay un tipo de mensaje de verdad. El usuario puede cambiar el contenido del campo de texto.
type Msg
  = Change String

Esto quiere decir o función de actualización sólo tiene que manejar esto uno de los casos:
update : Msg -> Model -> Model
update msg model =
  case msg of
    Change newContent ->
      { model | content = newContent }

Cuando recibimos el nuevo contenido, nosotros utilizamos el registro para actualizar la sintaxis del contenido.
Por último hay que decir cómo ver nuestra aplicación:
view : Model -> Html Msg
view model =
  div []
    [ input [ placeholder "Text to reverse", onInput Change ] []
    , div [] [ text (String.reverse model.content) ]
    ]

Creamos un <div> con dos hijos.
El hijo nteresante es el nodo <input>. Además del atributo marcador de posición placeholder , que utiliza onInput para declarar qué mensajes deben ser enviados cuando el usuario escribe en esta entrada.
Esta función onInput es bastante interesante. Se toma un argumento, en este caso el cambio Change de función que se creó cuando declaramos el Msg de error:
Change : String -> Msg
Esta función se utiliza para etiquetar todo lo que es actualmente en el campo de texto. Así que digamos que el campo de texto tiene actualmente yol y el usuario escribe o. Esto desencadena un input evento de entrada, por lo que recibirá el mensaje de Change"Yolo" en nuestra función de actualización update.
Tags : , ,

No hay comentarios:

Publicar un comentario

Publicaciones Populares

Nosotros

Este Blog surguio ante la necesidad de estudiar Elm y observar que no existia documentación alguna. Así que es de uso personal para estudiar y aprender de esta programación funcional.

Para la realización de algunos post se realizo la documentación oficial de Elm https://guide.elm-lang.org/get_started.html

¿Lo ves? Es curioso...

Categorías