Knockout - 在View Model中更新observableArray

时间:2013-02-06 16:57:44

标签: javascript knockout.js

我希望将我的视图模型作为JSON字符串保存到数据库中。我的想法是,我可以通过阅读JSON并使用直接方法加载我的视图模型的数据来重新加载我的视图模型:

来自Knockout文档:

// Load and parse the JSON
var someJSON = /* Omitted: fetch it from the server however you want */;
var parsed = JSON.parse(someJSON);

// Update view model properties
viewModel.firstName(parsed.firstName);
viewModel.pets(parsed.pets);

这一切都很有效,但是我已经初始化了我的模型,我只是用我已经保存的那个更新它,我看不出如何选择数组中最初选择的条目 - 下面列表。

换句话说,当我保存模型时,宠物下拉列表被选为“猫”。然后我将下拉列表选择更改为“Dog”。在重新加载保存的模型时,我需要将下拉列表选择重置为“Cat”。

我有点担心这个因为我有一些对象数组,这些对象也需要从保存的模型中读入,看起来很难做到。

欢迎任何想法或建议:)

1 个答案:

答案 0 :(得分:1)

您正在寻找的是Knockout的映射插件。 http://knockoutjs.com/documentation/plugins-mapping.html

它具有处理JSON到observable和返回的方法。

所以在你的例子中你可以做到:

var viewModel = ko.mapping.fromJSON(someJSON);

当你准备好回到服务器时:

var jsonData = ko.mapping.toJSON(viewModel);

如果你需要,还有对象文字助手(ko.mapping.toJS& ko.mapping.fromJS)