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

277
Visualizações
Knockout JS Agregar o quitar clase

Estoy usando Knockout para generar un formulario dinámico:

 function FormField(data) { var self = this; self.Name = ko.observable(data.Name); self.Type = ko.observable(data.Type); self.Options = ko.observableArray(data.Type !== 'text' ? data.Options : []); self.Default = ko.observable(data.Default); if (self.Type() === 'Yes/No') { this.Default.subscribe(function(newValue) { console.log(newValue); }); } } function ViewModel(data) { var self = this; self.Fields = ko.observableArray(ko.utils.arrayMap(data, function(item) { return new FormField(item); })); self.HiddenElements = ko.observableArray([]); self.Default = ko.observable(); } ko.applyBindings(new ViewModel([{ Name: "Test", Type: "Yes/No", Options: [{ name: "Yes" }, {name: "No" }], Default: "" }]));
 input[type=radio] { display: none; }
 <link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/4.6.1/css/bootstrap.min.css" rel="stylesheet"/> <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.css" rel="stylesheet"/> <script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script> <div data-bind="foreach: Fields"> <!--ko if: $parent.HiddenElements().indexOf(Name()) == -1 --> <div><b type="text" data-bind="text: Name"></b>:</div> <!--ko if: Type() == "Yes/No"--> <div data-bind="foreach: Options"> <label data-bind="css:$data.name == 'Yes' ? 'btn btn-success fa fa-circle-o' : 'btn btn-danger fa fa-circle-o'"> <input type="radio" value="cherry" data-bind="value: $data.name ,checked: $parent.Default" /> <span data-bind="text: $data.name"></span></label> </div> <!--/ko--> <!--/ko--> </div>

La salida:
salida incorrecta sin botón seleccionado

Estoy tratando de eliminar la clase fa-circle-o y agregar la clase fa-check-circle-o cuando cualquiera de los botones está marcado.

Rendimiento esperado:
salida con 'Sí' seleccionado

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

El enlace checked en <input> esencialmente dice:

Cuando esta opción está marcada, almacene $data.name en el observable $parent.Default

Eso significa que en su etiqueta, puede averiguar si la etiqueta pertenece a una entrada marcada haciendo lo siguiente:

 $data.name === $parent.Default()

Entonces su enlace será algo como:

 <label class="btn fa" data-bind="css: { 'btn-success': $data.name === 'Yes', 'btn-danger': $data.name !== 'Yes', 'fa-check-circle-o': $data.name === $parent.Default(), 'fa-circle-o': $data.name !== $parent.Default() }">...</label>
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