Tengo un problema con Knockout.js. Quiero pasar el nombre de usuario para una función y mostrar en alerta. Algo extraño está sucediendo. Me recibe alertas cada vez que al actualizar la página correcta, nombres de usuario, pero después de hacer clic en ella no obtengo ninguna respuesta. ¿Qué está mal aquí? Aquí está mi código:

<ul data-bind="foreach: contacts">
   <li class="user-box"><span class="user-box-name" data-bind="text: username, click: $root.userClick(username)"></span>
   </li>
</ul>

y

self.userClick = function (x) {
    alert(x);
}

OriginalEl autor Paweł Reszka | 2013-01-06

2 Comentarios

  1. 29

    La click unión acepta una función de devolución de llamada para ser llamado cuando el control se hace clic.

    Sin embargo, en el ejemplo, se llama a la función en su lugar. Lo que pasa es que cada vez que se carga la página, los enlaces se cargan y su función es invocada como está escrito. Usted necesita para envolver que en una función de modo que no se llama así.

    <span class="user-box-name"
          data-bind="text: username, click: function () { $root.userClick(username); }">
    </span>
    Muchas gracias! Funciona!
    tenía el mismo problema, esta solución funciona muy bien, gracias

    OriginalEl autor Jeff Mercado

  2. 11

    Knockout pasa el objeto correcto para el controlador de eventos. Hacerlo así:

    <ul data-bind="foreach: contacts">
       <li class="user-box">
         <span 
           class="user-box-name" 
           data-bind="text: username, click: $root.userClick"
         ></span>
       </li>
    </ul>

    y

    self.userClick: function (obj, event) {
        alert(obj.username);
    }
    Esta debe ser la respuesta correcta.
    Nunca capaz de hacer eso. Siempre tuvo el objeto indefinido.

    OriginalEl autor Tomalak

Dejar respuesta

Please enter your comment!
Please enter your name here