Próbuję załadować niestandardowe komponenty za pomocą knockoutjs.

Oto mój HTML:

<div id="mainDiv"></div>

JS:

$("#mainDiv").append("<my-component-name></my-component-name>");

To dodaje <my-component-name></my-component-name> po div, ale nie wiąże mojego komponentu z HTML.

Jeśli użyję ko.applyBindings();, generuje błąd "Error: You cannot apply bindings multiple times to the same element."

Nie jestem w stanie znaleźć tego, co jest nie tak z wiązaniami.

0
Vish 29 sierpień 2020, 18:22

2 odpowiedzi

Najlepsza odpowiedź

Tutaj mam rozwiązanie:

var myComp = document.createElement("my-component-name");
$("#mainDiv").append(myComp);
ko.applyBindings({},myComp);

Do powiązania mojego komponentu w html potrzebny był Ko.applyBinding.

-1
Vish 7 wrzesień 2020, 09:01

Widok został zaktualizowany, ale powiązania nie. Musisz zrobić ko.applyBindings na każdym elemencie wstawionym do HTML po pierwszym zastosowaniu powiązań. Nakładanie komponentów po zastosowaniu wiązań to kiepskie rozwiązanie. I NIE mieszaj nokautu z manipulacją jQuery lub js DOM, PLEEEASSE!

0
tscpp 30 sierpień 2020, 18:49