KnockoutJS - enlace de entrada de texto

Este enlace se utiliza para crear un enlace bidireccional entre el cuadro de texto o área de texto y la propiedad ViewModel. La diferencia entre esto y el enlace de valor es que este enlace hace que las actualizaciones inmediatas estén disponibles desde HTML DOM para varios tipos de entrada.

Syntax

textInput: <binding-value>

Parameters

  • La propiedad de valor del elemento DOM HTML se establece en valor de parámetro. Se sobrescribirán los valores anteriores.

  • Si el parámetro no es un Número o una Cadena (como un objeto o una matriz), el texto mostrado es equivalente a un formato de Cadena.

  • Si el parámetro es un observable, entonces el valor de los elementos se actualiza a medida que se cambia el observable subyacente. El elemento se procesa solo una vez, si no se utiliza ningún observable.

  • En la mayoría de las situaciones, se prefiere textInput sobre el enlace de valores debido a la capacidad de textInput para proporcionar actualizaciones en vivo desde DOM para cada tipo de entrada y la capacidad de manejar comportamientos extraños de los navegadores.

Example

Echemos un vistazo al siguiente ejemplo que demuestra el uso del enlace textInput.

<!DOCTYPE html>
   <head>
      <title>KnockoutJS textInput Binding </title>
      <script src = "https://ajax.aspnetcdn.com/ajax/knockout/knockout-3.3.0.js"
         type = "text/javascript"></script>
   </head>

   <body>
      <p> Enter your reviews here: <br><br><textarea rows=5 
      data-bind = "textInput: someReview" ></textarea><br></p>
      
      <p> You entered : <span data-bind = "text: someReview"></span></p>

      <script type = "text/javascript">
         function ViewModel() {
            this.someReview = ko.observable('');
         };

         var vm = new ViewModel();
         ko.applyBindings(vm);
      </script>
      
   </body>
</html>

Output

Realicemos los siguientes pasos para ver cómo funciona el código anterior:

  • Guarde el código anterior en textinput-bind.htm archivo.

  • Abra este archivo HTML en un navegador.

  • Los datos ingresados ​​en textarea se actualizan en ViewModel inmediatamente.

Observaciones

textInput vs Value binding

El enlace textInput proporciona actualizaciones en vivo inmediatas. Las principales diferencias entre textInput y value Binding son:

Immediate updates- De forma predeterminada, el enlace de valor solo actualiza el modelo cuando el usuario mueve el foco fuera del cuadro de texto. El enlace textInput actualiza el modelo instantáneamente después de cada pulsación de tecla o en otro mecanismo de entrada de texto.

Browser event weirdness handling- Los navegadores son altamente impredecibles en los eventos que se activan en respuesta al mecanismo de entrada de texto inusual, como arrastrar, cortar o permitir la sugerencia de autocompletar. El enlace de valores no maneja todos los casos de entrada de texto en todos los navegadores.

El enlace textInput está especialmente diseñado para manejar una amplia gama de comportamientos extraños de los navegadores. De esta manera, proporciona actualizaciones de modelos consistentes e instantáneas, incluso en caso de mecanismos de entrada de texto inusuales.