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']) 
War es hilfreich?

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?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top