Knockout.js pas mise à jour vue de l'appel ajax dynamique
-
26-10-2019 - |
Question
Je suis en train de se mettre à jour knockout.js mon point de vue après un appel ajax, mais pas avoir de chance. Je continue à obtenir l'erreur ci-dessous. Il erreurs à app.interactive.updateBindings
. Le paramètre parseBindingAttribute viewmodel est indéfini.
Erreur:
Impossible d'analyser attribut obligatoire. Message:
ReferenceError:interactive
n'est pas défini;
Valeur d'attribut:template: { name: 'answerTmpl', foreach: interactive.answers }
Dynamic 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>
Le fichier de mon:
(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);
Je peux Fixit avec le ci-dessous le code:
ko.applyBindingsToNode(element, null, app.viewModel);
Mais maintenant, je reçois cette erreur:
non valide 'dans' opérande jQuery.template
if (templateId in jQuery['template'])
La solution
Je me sens comme un idiot. Je ne mentionne pas même le script de modèle jquery.
Autres conseils
Il semble un peu déroutant. Vous avez app.viewModel.interactive , puis sur app.interactive . Je pourrais bien manquer quelque chose, mais tenteriez-vous applyBindings plus simplement et travailler viewmodel espaces de noms à partir de là?