在Knockout中扩展动态和映射数据
Extending dynamic and mapped data in Knockout
使用Knockout.JS,我试图确定如何最好地扩展视图模型中的对象,当它们将通过映射插件加载并动态添加时。在本例中,我将向Person对象添加一个方法addChild。
映射期间扩展:
var myPersonModel = function (data) {
ko.mapping.fromJS(data, {}, this);
this.addChild = function () {
this.children.push(new Child());
} .bind(this);
}
var mapping = {
'people': {
create: function (options) {
return new myPersonModel(options.data);
},
}
}
var viewModel = ko.mapping.fromJS(data, mapping);
在动态创建期间扩展:
function Person(id, name, children) {
this.id = ko.observable(id);
this.name = ko.observable(name);
this.children = ko.observable(children);
this.addChild = function () {
this.Forms.push(new Child());
} .bind(this);
}
但在我看来,必须有一种更简单的方法来做到这一点,这样我就不需要重复自己,并且映射的对象和新对象都会得到addChild
方法。
看看这个答案,尤其是JSFiddle上的实际例子。
看起来你的代码已经接近它所需要的
我认为您只需要将mapping
和ko.mapping.fromJS
折叠到您的Person
构造函数中。
相关文章:
- JSON:获取映射数据
- 有没有一种简单的方法可以用Lodash映射嵌套数据
- 在Knockout中扩展动态和映射数据
- Ember数据:如何;映射”;工作
- D3.JS数据映射国家名称变量
- 从服务器中删除映射数据,丢失订阅
- 在Redux中映射对象数组数据
- 骨干数据映射
- 陷入Json,无法使用敲除映射控件将Bindings应用于数据
- Highcharts映射附加不需要的数据
- 在slickgrid数据视图中使用深度映射
- 挖空映射:加载数据后,父模型中的计算可观察量不会更新
- 如何将二进制数据映射到javascript中的字符
- 从ajax post与静态数据中剔除映射数据
- 如何在 D3JS 中正确使用字符串值作为轴刻度?无法正确映射数据无法找出此代码中的问题
- 在 d3 中使用滑块映射数据示例
- 避免'无法读取未定义'的属性;映射数据时出错
- HighCharts:树映射数据标签在向下钻取/向上钻取时不一致
- 条形图-分组和映射数据
- Qt和JavaScript映射数据