<p>Das Modul Knockout.validation funktioniert in 3.5.0-rc nicht mehr</p>

Erstellt am 15. Okt. 2018  ·  3Kommentare  ·  Quelle: knockout/knockout

Hallo Leute, das Knockout-Validierungsmodul funktioniert in 3.5.0-rc nicht mehr und sagt Folgendes:

knockout-latest.js:84 Uncaught Error: ko.applyBindings: first parameter should be your view model; second parameter should be a DOM node
    at a.qc (knockout-latest.js:84)
    at Object.ko.applyBindings (knockout.validation.js:1472)
    at HTMLDocument.<anonymous> (startup.designtime.ts:50)

Einfache Repro: https://jsfiddle.net/azaslonov/4z62mw1r/

Wenn man bedenkt, dass sie seit 2015 nicht mehr veröffentlicht wurden, ist wahrscheinlich etwas in KO selbst kaputt gegangen.
https://github.com/Knockout-Contrib/Knockout-Validation/releases

Könnt ihr bitte mal nachschauen?

Hilfreichster Kommentar

Siehe https://github.com/knockout/knockout/issues/2388 - um zusammenzufassen, vor 3.5 war nicht angegeben, was es bedeutete, einen Nicht-DOM-Knotenwert als zweiten Parameter an ko.applyBindings ; Wenn Sie in 3.5 einen zweiten Parameter übergeben, muss es ein DOM-Knoten sein.

Die Knockout-Validierung überschreibt ko.applyBindings und übergibt immer einen zweiten Parameter an das ursprüngliche ko.applyBindings . In Ihrem Beispiel löst Knockout daher einen Fehler aus, da der Wert des Parameters, der an das ursprüngliche ko.applyBindings wird, undefined , das kein DOM-Knoten ist.

Wahrscheinlich ist der einfachste Weg, wenn Sie Knockout-Validierung verwenden, immer einen zweiten Parameter explizit mit dem Wert document.body . Ändern Sie in Ihrem Beispiel ko.applyBindings() in ko.applyBindings(undefined, document.body)

Alle 3 Kommentare

Siehe https://github.com/knockout/knockout/issues/2388 - um zusammenzufassen, vor 3.5 war nicht angegeben, was es bedeutete, einen Nicht-DOM-Knotenwert als zweiten Parameter an ko.applyBindings ; Wenn Sie in 3.5 einen zweiten Parameter übergeben, muss es ein DOM-Knoten sein.

Die Knockout-Validierung überschreibt ko.applyBindings und übergibt immer einen zweiten Parameter an das ursprüngliche ko.applyBindings . In Ihrem Beispiel löst Knockout daher einen Fehler aus, da der Wert des Parameters, der an das ursprüngliche ko.applyBindings wird, undefined , das kein DOM-Knoten ist.

Wahrscheinlich ist der einfachste Weg, wenn Sie Knockout-Validierung verwenden, immer einen zweiten Parameter explizit mit dem Wert document.body . Ändern Sie in Ihrem Beispiel ko.applyBindings() in ko.applyBindings(undefined, document.body)

Danke, ich denke damit kann ich erstmal leben.

Alternativ können Sie die Knockout-Validierung patchen und den Aufruf origApplyBindings(viewModel, rootNode) in origApplyBindings.apply(this, arguments) ändern.
Wenn Sie ko.applyBindingsWithValidation Sie es wahrscheinlich auch aktualisieren.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen