Knockout.js不从动态ajax调用更新视图

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

我试图让knockout.js在一次ajax调用后更新我的视图,但运气不好。我一直得到下面的错误。它在app.interactive.updateBindings中出错。parseBindingAttribute viewModel参数未定义

错误:

无法分析绑定属性。信息:
引用错误:
交互
未定义
属性值:
模板:{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'])