gpt4 book ai didi

javascript - 对复杂的类结构和 knockout 感到困惑

转载 作者:行者123 更新时间:2023-11-30 06:36:18 24 4
gpt4 key购买 nike

开始使用 Knockout 并慢慢适应它。试图在一个新项目中使用它,但很难让事情排好队。虽然我理解并且可以做简单的例子(简单的形式,文本框绑定(bind)到 ko.observables,或者表格或列表绑定(bind)到 ko.observableArray),但我无法获得组合的正确语法,特别是如果我想将数据转换为 JSON 格式,以便通过网络服务传输数据,并保存到数据库中。

基本上它是一个数据输入表单,带有一些文本输入框,然后是一个项目列表(想想公司信息 + 它的员工列表)。

我这里有一个 fiddle 示例:http://jsfiddle.net/rhzu6/

在saveData函数中,就是不知道怎么才能把数据打包好。执行 ko.toJS(self) 只会显示“对象”。

我尝试将数据定义为对象,但很快就迷路了:

function Company(CompanyName, ZipCode) {

var self = this;
self.ZipCode = ko.observable(ZipCode);
self.CompanyName = ko.observable(CompanyName );
self.Employees = ko.observableArray();
}

function Employee(FirstName, LastNameB) {
var self = this;
self.FirstName = ko.observable(FirstName);
self.LastName = ko.observable(LastName);
}

然后 ViewModel 看起来像:

function viewModel() {
var self = this;
self.Company = ko.observable(); // company?
self.Employees = ko.observableArray(); // ?
}

但是遇到了同样的问题。并且还有绑定(bind)问题 - data-bind:"value: CompanyName"抛出一个异常,说它不知道 CompanyName 是什么......

让我难过。我确定这很容易,我只是想念它。

我们将不胜感激!

谢谢

最佳答案

您正在寻找 ko.toJSON,它将首先在您的 ViewModel 上调用 ko.toJS,然后再调用 JSON.stringify

ko.toJS 会将您的 knockout 模型转换为简单的 JavaScript 对象,从而用它们各自的值替换所有可观察对象等。

我更新了你的 Fiddle进行演示。

有关更多信息,请查看此 post来自 Ryan Niemeyers 博客。

另一种方法是使用 ko.utils.postJson:

ko.utils.postJson(location.href, {model: ko.toJS(viewModel) });

再次注意 ko.toJS

关于javascript - 对复杂的类结构和 knockout 感到困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14238493/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com