Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用多视图模型剔除JSON_Javascript_Json_Knockout.js - Fatal编程技术网

Javascript 使用多视图模型剔除JSON

Javascript 使用多视图模型剔除JSON,javascript,json,knockout.js,Javascript,Json,Knockout.js,我有一个简单的淘汰设置,在其中我试图实现多个视图模型。它似乎解决了一个问题:我无法正确使用toJSON 我的html是: <!DOCTYPE html> <html> <head> <title>Playground</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet"

我有一个简单的淘汰设置,在其中我试图实现多个视图模型。它似乎解决了一个问题:我无法正确使用toJSON

我的html是:

<!DOCTYPE html>
<html>
<head>
<title>Playground</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="content/css/bootstrap.css" type="text/css" media="all" />

<script type="text/javascript" src="lib/jquery-2.1.1.min.js"></script>
<script type="text/javascript" src="lib/knockout-3.2.0.js"></script>
<script type="text/javascript" src="lib/bootstrap.js"></script>

</head>
<body>
<div class="container" id="appHost">
<section id="nameHeader">
    <label>
    First Name:
    <input data-bind="value: firstName, enable: canEdit" />
    </label>
    <button data-bind="click: toggleEdit" class="btn btn-primary">Toggle Edit</button>
</section>
<section id="other">
    <label>
    First Name:
    <input data-bind="value: firstName, enable: canEdit" />
    </label>

    <button data-bind="click: toggleEdit" class="btn btn-primary">Toggle Edit</button>

</section>

<h2>Debugging View</h2>
<pre data-bind="text: ko.toJSON({name1: self.NameViewModel, name2: self.OtherViewModel})"></pre>

<script type="text/javascript" src="sample.js"></script>
</div>
</body>
</html>
如果我进行重构,使只有一个视图模型,并将JSON更改为使用$root,则页面将按预期工作。也就是说,我在HTML的调试部分看到了我的模型的JSON视图

如何使用toJSON获得视图模型特定的视图?或者,如何将整个页面作为单个JSON对象获取。有可能吗?我试过:

ko.toJSONNameViewModel

上面示例中的代码是我最近尝试查看这两个模型的代码

感谢您的帮助

维克

我想

ko.toJSON($data, null, 2) 

你应该完成你想要的

不幸的是,这不起作用。更改后的行为:。没有改变。把它放在页面的顶部,就在你的顶部部分元素的正上方。如果您可以将代码放在JSFIDLE中以显示问题,这将更容易帮助解决。我误读了您的代码:看看这个,当您在何处调用它时,您不在这些绑定的上下文中。该数据对绑定到的元素有效。好的,这是有意义的。那么,在实现多个视图模型时,有没有一种方法可以将整个页面视为一个JSON,或者这是胡说八道呢?我的方法是每个视图模型一个视图。您可以让该视图包含多个对象,但我会为整个页面创建一个viewmodel。
ko.toJSON($data, null, 2)