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

时间:2013-07-07 19:35:28

标签: javascript knockout.js

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

我知道我可以创建我的模型的对象,然后创建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);

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

2 个答案:

答案 0 :(得分:1)

对我来说似乎是一种很好的方式,至少在你提供的背景下。 mapping plugin's documentation有一个关于AJAX请求的部分,最后还有一个“高级”部分,可以帮助您跟踪服务器对象的密钥,以便更新回发服务器的更新。

另一个好的来源是loading & saving tutorial。它不使用映射插件,显示了通过AJAX请求处理CRUD操作的更基本的事情。

答案 1 :(得分:0)

Knockout Mapping插件似乎即将推出。原作者是/ looking for maintainers,此时似乎已达成共识,即让用户迁移到较新的Knockout ViewModel plugin

我不知道这是不是最好的做法,但我会说明我是如何进行JSON-to-ViewModel步骤的。我的VM相当复杂,所以我将它们保存在不同的js文件中并将数据传递给构造函数。这使得我的页内脚本看起来像这样:

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

使用单行使单元测试更方便(少了一件事)。