Knockout.js不从动态ajax调用更新视图
我试图让knockout.js在一次ajax调用后更新我的视图,但运气不好。我一直得到下面的错误。它在app.interactive.updateBindings中出错。parseBindingAttribute viewModel参数未定义 错误: 无法分析绑定属性。信息:Knockout.js不从动态ajax调用更新视图,ajax,asp.net-mvc-3,knockout.js,Ajax,Asp.net Mvc 3,Knockout.js,我试图让knockout.js在一次ajax调用后更新我的视图,但运气不好。我一直得到下面的错误。它在app.interactive.updateBindings中出错。parseBindingAttribute viewModel参数未定义 错误: 无法分析绑定属性。信息: 引用错误:交互未定义 属性值:模板:{name:'answerTmpl',foreach:interactive.answers} 动态HTML: app.viewModel.interactive.answers(@H
引用错误:
交互
未定义属性值:
模板:{name:'answerTmpl',foreach:interactive.answers}
动态HTML:
app.viewModel.interactive.answers(@Html.Raw(@Model.answers.ToJson());
app.interactive.updateBindings(document.getElementById('answers');
My.js文件:
(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);
我可以用以下代码修复它:
ko.applyBindingsToNode(element, null, app.viewModel);
但现在我得到了这个错误:
无效的“in”操作数jQuery.template
看起来有点混乱。您有app.viewModel.interactive,然后是app.interactive。我很可能遗漏了一些东西,但你能尝试将绑定应用到更简单的名称空间viewmodel并从那里开始工作吗?我觉得自己像个白痴。我甚至没有引用jquery模板脚本。我想要一个名称空间的viewmodel,以防使用不同的文件。app.interactive是特定视图,而app是所有页面的全局视图。我确实认为这可能是一个名称空间问题,但我已经将名称空间用于其他项目。如果我有多个文件要绑定,那么它们将只使用app.viewModel.{unique name}.oops。至少你承认了这一点,公平竞争。哇。。。我只是犯了完全相同的错误。出于完全相同的原因。嗯,这对我来说是一个有用的答案和问题:)这里也是。它只在本地主机上工作,但当从另一台服务器访问页面时,它给出了相同的错误。我有文件在那里,但也只是在我的视图中丢失了脚本引用,修复了它。感谢您发布您的解决方案+1.P
if (templateId in jQuery['template'])