Object Knockout.mapping是否使所有嵌套对象都可见?

Object Knockout.mapping是否使所有嵌套对象都可见?,object,knockout.js,mapping,nested,observable,Object,Knockout.js,Mapping,Nested,Observable,我试图映射JSON对象中所有可能的嵌套对象,以便每个对象都成为可观察对象。我的印象是,使用ko.mapping.fromJS将导致所有对象及其对象变得可见。然而,我没有看到这种情况发生 如果查看下面的JSFIDLE和代码,您将看到span最初显示值“Test”。我的目的是通过单击按钮来使用stuff2的内容更新viewModel,这将把span的值更改为“Test2”。但是,单击按钮不会更新任何内容 HTML: 只是我必须使用映射选项才能使嵌套对象可见吗?如果是这样,那么如果JSON对象如此庞

我试图映射JSON对象中所有可能的嵌套对象,以便每个对象都成为可观察对象。我的印象是,使用
ko.mapping.fromJS
将导致所有对象及其对象变得可见。然而,我没有看到这种情况发生

如果查看下面的JSFIDLE和代码,您将看到span最初显示值“Test”。我的目的是通过单击按钮来使用
stuff2
的内容更新viewModel,这将把span的值更改为“Test2”。但是,单击按钮不会更新任何内容

HTML:


只是我必须使用映射选项才能使嵌套对象可见吗?如果是这样,那么如果JSON对象如此庞大和复杂(这一个显然不是)?是否可以使用一些递归功能在每个对象的嵌套对象之间循环,使它们都可以观察到?

按以下方式修改更新功能将起作用

me.Update = function () {
    ko.mapping.fromJS(stuff2, {}, windows.viewModel);
};

请注意,您拼写的是
windows.viewModel
,而不是
window.viewModel
。然而,改变这一点给了我一条“MaxCallStackSizeExcepended”的消息,仍然在思考到底是什么原因。在任何情况下,将参数更改为
me
。更改为me肯定适用于JSFIDLE…遗憾的是,这并不能解决实际页面上的问题。一旦我弄清楚小提琴和实际页面之间有什么不同,我将不得不回到这里。非常感谢你的帮助Jeroen。你肯定解决了一些问题,让我找到了真正的问题。。。。当我进行开发时,我倾向于使用javascript中的Chrome开发工具和调试器进行工作。似乎淘汰赛和调试器+Chrome开发工具不能很好地配合使用。当我取出调试器或关闭开发工具时,它会按预期工作
var ViewModel = function (data) {
    var me = this;
    ko.mapping.fromJS(data, {}, me);

    me.Update = function () {
        ko.mapping.fromJS(stuff2, {}, windows.viewModel);
    };

    return me;
};

var stuff = {
    IntroData: {
        Name: 'Test'
    }
};

var stuff2 = {
    IntroData: {
        Name: 'Test2'
    }
};

window.viewModel = ko.mapping.fromJS(new ViewModel(stuff));
ko.applyBindings(window.viewModel);
me.Update = function () {
    ko.mapping.fromJS(stuff2, {}, windows.viewModel);
};