在应用绑定最佳实践之前,使用json数据初始化Knockout ViewModel

initialize Knockout ViewModel with json data before apply binding best practices

本文关键字:json 使用 数据 初始化 ViewModel Knockout 绑定 应用 最佳      更新时间:2023-09-26

我有一个简单的knockoutjs ViewModel。但在将该模型的绑定应用到视图之前,我需要首先初始化它,或者使用一些数据(JSON格式)设置数组值,这些数据将通过AJAX从服务器获得。

我知道我可以创建我的模型的对象,发出ajax请求,然后初始化我的模型数组。像这样:

function AppViewModel() {
    var self = this;
    self.Servers = ko.observableArray([]);//this one 'll be filled by data from server
}
var MyViewModel = new AppViewModel();
MyViewModel.Servers = ko.mapping.fromJSON(json_data);//make ajax call to get json_data.
ko.applyBindings(MyViewModel);

这是好的做法还是有更好的做法。

至少在您提供的上下文中,这对我来说是一个很好的方法。映射插件的文档中有一个关于AJAX请求的部分,最后还有一个"高级"部分,可以帮助您跟踪服务器对象的密钥,从而更容易地向服务器发回更新。

另一个好的来源是加载&保存教程。它不使用映射插件,显示了通过AJAX请求处理CRUD操作的更基本的内容。

Knockout Mapping插件似乎正在退出。最初的作者正在寻找维护人员,在这一点上,似乎达成了共识,让用户迁移到更新的Knockout ViewModel插件。

我不知道这是否是最佳实践,但我会介绍一下我是如何完成JSON到ViewModel的步骤的。我的虚拟机相当复杂,所以我将它们保存在不同的js文件中,并将数据传递给构造函数。这使得我的页面内脚本看起来像这样:

var MyViewModel = new AppViewModel(json_data);
ko.applyBindings(MyViewModel);

有了单行使它在单元测试中稍微方便一些(少了一件需要忘记的事情)。