Tengo un formulario con algunos campos de conseguir algunos de los datos mediante knockout.js (ver. 2.1.0).
Por ejemplo, para actualizar el campo «valor» de una entrada pongo:

<input type="text"  name="contrasena" id="login-user" value="" placeholder="" data-bind="value: user">

Tengo un JSON para almacenar el valor de un quiero usar para «pasar» de la palabra clave, y funciona correctamente.

Traté de establecer el «marcador de posición» atributo con el mismo método, pero no funciona:

<input type="text"  name="contrasena" id="login-user" placeholder="" data-bind="placeholder: user">

Traté de modificar knockout.js añadir archivos «ko.bindingHandlers[‘marcador’]» función «ko.bindingHandlers[‘valor’]» (modificación de «marcador de posición» en lugar de «valor» en «ko.jsonExpressionRewriting.writeValueToProperty» de la función), pero no funciona correctamente, se coloca la información en el atributo «value» en lugar de «marcador de posición».

Alguien sabe la manera de resolver esto?

Muchas gracias!

InformationsquelleAutor user1702964 | 2012-09-28

2 Comentarios

  1. 33

    Si quieres usar data-bind="placeholder: user", puede crear un personalizado de unión en su código js.

    Que estaban en el camino correcto uso de ko.bindingHandlers['placeholder'] pero usted no necesita editar el knockout.js archivo , de hecho, que es mala práctica.

    Esto requeriría una muy básica personalizada de unión:

    ko.bindingHandlers.placeholder = {
        init: function (element, valueAccessor, allBindingsAccessor) {
            var underlyingObservable = valueAccessor();
            ko.applyBindingsToNode(element, { attr: { placeholder: underlyingObservable } } );
        }
    };

    Para una guía personalizada a los enlaces, a ver aquí

    Aunque Nocaut en sí es inherentemente molesta, esto es un poco menos. Quita el conocimiento de cómo el marcador de posición se aplica en el elemento de la vista.

    De hecho, si en el futuro usted quería aplicar algún tipo de plugin de jQuery para mostrar marcadores de posición en los navegadores que no soportan la placeholder atributo, este sería el lugar (init:) para inicializar el plugin — usted también necesitaría una update: función en ese caso.

    • El uso de data-bind=»attr: {marcador de posición: ph}» en su lugar.
  2. 90

    Debe utilizar el existente attr de unión, como este:

    <input data-bind="attr: {placeholder: ph}" />
    
    var Model = function () {
        this.ph = ko.observable("Text..."); 
    }
    ko.applyBindings(new Model());
    • Gracias muy mutch bgs!! Funciona.
    • gracias, he creado un codepen probar esto: codepen.io/logankd/pen/Gzorq
    • limpio, sin necesidad de enlaces personalizados, pueden ser reutilizados como es
    • Esto debe ser aceptado respuesta.

Dejar respuesta

Please enter your comment!
Please enter your name here