Knockout.js nicht aktualisiert die Ansicht vom dynamischen Ajax -Anruf
-
26-10-2019 - |
Frage
Ich versuche, knockout.js zu bekommen, um meine Ansicht nach einem Ajax -Anruf zu aktualisieren, aber kein Glück. Ich bekomme den Fehler weiter unten. Es fehlerhaft bei app.interactive.updateBindings
. Der ParsebindingAttribute ViewModel -Parameter ist undefiniert.
Fehler:
Bindungsattribut kann nicht analysiert werden. Nachricht:
ReferenzError:interactive
ist nicht definiert;
Attributwert:template: { name: 'answerTmpl', foreach: interactive.answers }
Dynamisches HTML:
<div id="questions">
<div id="answers" data-bind="template: { name: 'answerTmpl', foreach: interactive.answers }">
</div>
</div>
<script type="text/javascript">
app.viewModel.interactive.answers(@Html.Raw(@Model.Answers.ToJson()));
app.interactive.updateBindings(document.getElementById('answers'));
</script>
<script id="answerTmpl" type="text/html">
<div>
<span></span> <input type="checkbox" name="Answer" />
</div>
</script>
Meine .js -Datei:
(function (app, $, undefined) {
app.viewModel = {};
app.interactive = {};
app.interactive.callback = function () { };
app.viewModel.interactive = {
content: ko.observable('test'),
answers: ko.observableArray()
};
app.interactive.init = function () {
ko.applyBindings(app.viewModel);
};
app.interactive.updateBindings = function (element) {
ko.applyBindingsToNode(element);
};
app.interactive.init();
})(window.app = window.app || {}, jQuery);
Ich kann den folgenden Code beheben:
ko.applyBindingsToNode(element, null, app.viewModel);
Aber jetzt bekomme ich diesen Fehler:
ungültig 'in' Operand jQuery.template
if (templateId in jQuery['template'])
Lösung
Ich fühle mich wie ein Idiot. Ich habe nicht einmal das JQuery -Vorlagen -Skript bezogen.
Andere Tipps
Es sieht ein wenig verwirrend aus. Du hast app.viewmodel.interactive und dann app.interactive. Mir könnte etwas fehlen, aber würden Sie versuchen, sich auf einfacher Namens -ViewModel zu bewerben und von dort aus zu arbeiten?