2012-12-19 56 views
1

如果我定義的物體,像除去性能

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; 
}; 

如何從按鈕的點擊事件此對象中刪除屬性「國家」。事情是,當我發送數據到webservice我不想發送此屬性。

請參閱小提琴在這裏,我試圖刪除保存按鈕的點擊事件屬性「國家」。 http://jsfiddle.net/kirannandedkar/nZDrk/7/

+0

你見過http://stackoverflow.com/questions/10048485/how-to-clear-remove-observable-bindings-in-knockout-js嗎? –

回答

1

你必須刪除所有對象,此屬性:

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

這裏是工作提琴: http://jsfiddle.net/nZDrk/8/

+0

非常感謝。它的工作:) – DevelopmentIsMyPassion

1

可以使用delete關鍵字來從完全刪除對象的屬性:

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

既然你要發送數據到這個webservice,你應該做什麼g正在對象上實現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"} 
+0

非常感謝傑夫梅爾卡多 – DevelopmentIsMyPassion