我正在开发一个与报告相关的项目,我需要构建大量使用 KO 呈现的报告。使用 AJAX 提取所有数据并更新模型。目前我正在编写大量的 js 函数来映射模型。像这样的东西:
function modelx(child) {
var self = this;
self.Name = ko.observable(child.Name);
self.Relation = ko.observable(child.Relation);
// hundred other properties
};
function modely(child) {
var self = this;
self.Age = ko.observable(child.Age);
self.Relation = ko.observable(child.Relation);
// hundred other properties
};
在 AJAX 调用之后,我正在填充可观察数组
for (var i = 0; i < jsn.length; i++)
{
VM.modelxlist().push(new modelx(jsn[i]));
}
for (var i = 0; i < jsn1.length; i++)
{
VM.modelylist().push(new modely(jsn1[i]));
}
是否有任何方法可以避免 modelx、modely...的定义,以便在 HTML 中使用时自动构建模型,而不会失去这种方法的好处?当然,可能存在一种极端情况,我可能无法从服务器获取特定属性,我应该在服务器端检查该属性。
此外,有时我可能需要添加额外的计算可观察量(只是为了更加灵活)
最佳答案
为什么不使用 knockout 制图插件:
http://knockoutjs.com/documentation/plugins-mapping.html
然后你会得到类似的东西:
var modelxInstance= ko.mapping.fromJS(child);
knockout 的 map 插件有几个,我最喜欢的其实就是这个:
https://github.com/LucasLorentz/knockout.mapper
原因是它更容易配置并且速度更快。
关于javascript - 用于 knockout 的动态可观察类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29664006/