首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Knockout JS映射选项向映射的可观测数组添加可观测属性

使用Knockout JS映射选项向映射的可观测数组添加可观测属性
EN

Stack Overflow用户
提问于 2015-01-19 10:04:48
回答 1查看 1K关注 0票数 0

我使用Knockout可观察数组(self.data)将表绑定到视图中,该数组由AJAX调用和Knockout映射插件填充。目的是将ViewModel作为一个可重用的组件。

我需要添加一个列来选择表行。我想通过使用映射选项将布尔isSelected可观测属性添加到self.data可观测数组中的每个项来实现这一点。然后,self.selectClicked函数使用此可观测属性将项推送或弹出到self.selectedItems可观测数组。

问题是,我不太确定如何将isSelected属性添加到每个数组项中。

下面是目前的代码:

代码语言:javascript
运行
复制
//// 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);

};
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-19 10:58:48

您可以手动创建数据对象并使用isSelected添加create

代码语言:javascript
运行
复制
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);
};

JsFiddle

这在剔除映射插件文档中有记录。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28022059

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档