5

我有一个简单的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);

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

4

2 回答 2

1

对我来说似乎是一种很好的方法,至少在您提供的上下文中。映射插件的文档有一个关于 AJAX 请求的部分,最后还有一个“高级”部分,可以帮助您跟踪服务器对象的键,以便更轻松地将更新回发到服务器。

另一个很好的来源是加载和保存教程。它不使用映射插件,展示了关于通过 AJAX 请求处理 CRUD 操作的更基本的东西。

于 2013-07-07T19:44:21.897 回答
0

Knockout Mapping 插件似乎即将淘汰。原作者正在/正在寻找维护者,此时似乎共识是让用户迁移到更新的Knockout ViewModel 插件

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

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

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

于 2013-07-07T21:53:38.480 回答