【发布时间】:2015-03-17 07:21:49
【问题描述】:
我正在使用由 AJAX 调用和 Knockout 映射插件填充的 Knockout 可观察数组 (self.data) 在视图中绑定表。目的是让 ViewModel 作为一个可重用的组件。
我需要添加一列来选择表格行。我想通过使用映射选项为self.data observable 数组中的每个项目添加一个布尔值isSelected observable 属性来做到这一点。然后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);
};
}
【问题讨论】:
标签: javascript knockout.js knockout-mapping-plugin