Knockout.js non aggiornare vista dalla chiamata AJAX dinamica
-
26-10-2019 - |
Domanda
Sto cercando di ottenere knockout.js aggiornare mio punto di vista, dopo una chiamata AJAX ma che non hanno fortuna. Continuo a ricevere l'errore sotto. Si errori a app.interactive.updateBindings
. Il parametro parseBindingAttribute ViewModel non è definito.
Errore:
Impossibile analizzare l'attributo vincolante. Messaggio:
ReferenceError:interactive
non è definito;
valore di attributo: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>
file .js mia:
(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);
posso FixIt con il sottostante Codice:
ko.applyBindingsToNode(element, null, app.viewModel);
Ma ora sto ottenendo questo errore:
non valido 'in' operando jQuery.template
if (templateId in jQuery['template'])
Soluzione
mi sento come un idiota. Non ho nemmeno fare riferimento al script per i modelli jquery.
Altri suggerimenti
Sembra un po 'di confusione. Lei ha app.viewModel.interactive e quindi app.interactive . Potrei pure mancare qualcosa, ma vorrei tentare di applyBindings a viewmodel più semplicemente namespace e lavorare da lì?