Javascript 移除可观测数组中的属性

Javascript 移除可观测数组中的属性,javascript,knockout.js,Javascript,Knockout.js,如果我像这样定义对象 var Person = function(id, name, country) { var self = this; self.id = ko.observable(id); self.name = ko.observable(name); self.country = ko.observable(country); return self; }; 如何在单击按钮事件时从此对象中删除属性“country”。问题是,当我向web

如果我像这样定义对象

var Person = function(id, name, country) {
    var self = this;
    self.id = ko.observable(id);
    self.name = ko.observable(name);
    self.country = ko.observable(country); 

    return self;
};
如何在单击按钮事件时从此对象中删除属性“country”。问题是,当我向webservice发送数据时,我不想将此属性发送给它

请看这里的小提琴,我试图删除属性“国家”点击保存按钮事件。

您可以使用
delete
关键字从对象中完全删除属性:

var somePerson = new Person(1, 'blah', 'blah');
delete somePerson.country;
// send somePerson to the webservice

必须从所有对象中删除此属性:

this.SaveDetail = function() {
    ko.utils.arrayForEach(people(), function(item){
        delete item["country"];                 
    });
};

下面是工作提示:

既然您要将数据发送到此Web服务,那么您应该在对象上实现
toJSON()
函数并删除其中的属性。然后在模型上发送调用
ko.toJSON()
的结果。这样,您的模型仍然包含属性,但您发送的内容已删除属性

var Person = function(id, name, country) {
    var self = this;
    self.id = ko.observable(id);
    self.name = ko.observable(name);
    self.country = ko.observable(country); 

    self.toJSON = function () {
        var data = ko.toJS(self); // get the values of this model
        // delete the property from the data
        delete data.country;
        return data;
    };
};

var person = new Person(1, 'foo', 'bar');
var data = ko.toJSON(person); // {"id":1,"name":"foo"}
你看到了吗?