Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

228
Views
establecer el valor knockout.js programáticamente desde "fuera"

Soy nuevo en knockout.js: me he hecho cargo de una aplicación existente escrita en él, los mantenedores anteriores se han ido, y quiero comenzar escribiendo pruebas que ejerzan todo desde fuera. La mayoría de las páginas son bastante sencillas, pero me he encontrado con esto:

 <textarea maxlength="4000" data-bind="valueWithPlaceholder: answerValue, placeholder: exampleText, maxLengthCountdown: answerValue"></textarea>

esto está dentro de un con, dentro de bucles dentro de otro con, etc., y no tengo ningún interés real en descifrar todo el esquema en este punto, solo quiero configurarlo en algo con javascript.

  • Probé element.value = "blah": establece el valor de manera visible, pero no parece afectar el enlace de ninguna manera: ir a "siguiente" todavía dice que tengo que ingresar algo
  • Intenté hacer element.focus(), un montón de element.dispatchEvent( new KeyboardEvent(...) con keydown, keypress y key up, y luego element.blur() y no pasa nada

¿Alguna idea de cómo lo configuro? Quiero alguna forma que no esté ligada a la comprensión del esquema, porque tengo un montón de estos para configurar, y quiero construir alguna función a lo largo de las líneas de "set_text_area (elemento, valor)". Realmente estoy buscando algo como:

 element.value = "blah" knockout.force_update_binding( element ); // I'm imagining this exists

Nota: lo que estoy preguntando es cómo establecer un valor mediante programación a partir de un elemento y sin saber nada sobre el modelo subyacente. Obviamente, si conozco el modelo, simplemente lo configuro, pero solo estoy haciendo clic en un elemento en mi arnés de prueba y quiero escribir un valor, y mi arnés de prueba no puede ir y "entender" cosas.

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Esto es un poco antipatrón, pero me da la impresión de tu pregunta que solo quieres hacer el trabajo...

Si conoce el nombre de la propiedad observable

Si sabe qué propiedad establecer, puede usar ko.dataFor para obtener el modelo de vista que pertenece al nodo.

 ko.applyBindings({ myValue: ko.observable("Initial value") }); ko.dataFor(document.querySelector("input")) // Get the viewmodel .myValue("New value"); // Set a new value
 <script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script> <input data-bind="value: myValue">

Si solo conoce el tipo de enlace

También puede solicitar la eliminación de todos los enlaces aplicados a un nodo:

 ko.applyBindings({ myValue: ko.observable("Initial value") }); // Get your node const myNode = document.querySelector("input"); // Get the bindings const bindings = ko .bindingProvider .instance .getBindings( myNode, ko.contextFor(myNode) ) // Get the observable that is used in the 'value' binding const boundValue = bindings.value; // Set a new value boundValue("New value");
 <script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script> <input data-bind="value: myValue">

Nota: los enlaces que ha mostrado en su plantilla no son enlaces de eliminación predeterminados. Entonces, si los ejemplos anteriores no funcionan, es posible que deba compartir sus implementaciones con nosotros para que podamos ayudarlo.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!