使用挖空 JS 映射选项将可观察属性添加到映射的可观察数组
Adding an Observable Property to a mapped Observable Array using Knockout JS Mapping Options
我正在使用一个由AJAX调用和挖空映射插件填充的Knockout可观察数组(self.data
)在视图中绑定一个表。目的是将视图模型作为可重用的组件。
我需要添加一列来选择表格行。 我想通过使用映射选项向self.data
可观察数组中的每个项目添加一个布尔isSelected
可观察属性来做到这一点。然后,self.selectClicked
函数使用此可观察属性将项目推送或弹出到self.selectedItems
可观察数组。
问题是,我不太确定如何将 isSelected
属性添加到每个数组项。
这是当前的代码:
//// NOTE: ko.applyBindings and the AJAX call currently happen outside of this code.
function ViewModel() {
var self = this;
var mapping = {
// Boolean observable property for each array item added here?
};
self.data = ko.observableArray([]);
self.selectedItems = ko.observableArray([]);
self.selectClicked = function (data, event) {
if (event.currentTarget.checked) {
self.selectedItems.push(data);
}
else {
self.selectedItems.pop(data);
}
return true;
};
// AJAX Data is pushed to the self.data observable array through this function
self.addData = function (_data) {
ko.mapping.fromJS(_data, mapping, self.data);
};
}
您可以使用create
手动创建数据对象并添加isSelected
:
var mapping =
{
create: function(_data) {
return new Data(_data.data);
}
};
self.addData = function (_data) {
ko.mapping.fromJS(_data, mapping, self.data);
};
var Data = function (data) {
var self = this;
ko.mapping.fromJS(data, {}, self);
self.isSelected = ko.observable(false);
};
小提琴
这记录在挖空映射插件文档中。
相关文章:
- 如何在映射数组中添加换行符
- knockoutjs可观察数组
- ng映射方向备选方案
- 无法通过数组映射绑定
- ReactJS映射:如何仅在url变量不为空时呈现html链接
- 如何使用敲除映射将空值映射到空的可观察数组
- 挖空映射:加载数据后,父模型中的计算可观察量不会更新
- 使用挖空 JS 映射选项将可观察属性添加到映射的可观察数组
- 如何为我使用映射插件创建的挖空可观察量设置验证
- 将 Json 数组挖空映射到可观察数组得到错误
- Angular2 Http 请求返回没有映射方法的可观察性
- 如何将计算可观察量添加到 KNOCKOUTJS 映射中
- knockout.js没有从json映射可观察数组
- 如何通过“可观察对象”创建(映射)复杂类型Knockout.js
- 试图转换/映射我的JSON数组中的对象到我的KO可观察函数
- 如何切换映射-发出一个对象包含原始和新的可观察对象
- 淘汰映射——被映射到的类中的对象和可观察对象之间的差异
- 使用Knockout映射插件在子数组的成员上定义计算可观察对象
- 如何获得击倒可观察对象绑定击倒映射
- 带有对象集合的Json数据被映射为可观察的,而不是可观察的数组