javascript - 用于 knockout 的动态可观察类

标签 javascript ajax knockout.js

我正在开发一个与报告相关的项目,我需要构建大量使用 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/

相关文章:

javascript - 如何获取 indexOf 以检查一个或多个值

javascript - 为单击事件后变大的按钮添加平滑过渡

javascript - knockout : How to conditionally display and store a value dependent on a dropdown?

继承和knockoutjs

javascript - 即使在数据更改期间也会触发 knockout 点击事件

javascript - 在 Jqgrid 中显示数据

javascript - 剥离非数字值不起作用

javascript - 语法错误: missing ; before statement with AJAX

asp.net-mvc - Asp.Net MVC 实用程序 Controller 过滤下拉列表的操作

php - 如何检查变量的值并调用不同的函数