Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

233
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda