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"}
你看到了吗?