0
事實證明,我認爲這很難。我有一個ViewModel,我專門用於在我的網格中進行過濾。那就是:刪除淘汰賽視圖的空屬性Model
var GridFiltersViewModel = function() {
var self = this;
self.search = ko.observable();
self.sortColumn = ko.observable();
self.sortDirectionIsAscending = ko.observable(true);
self.page = ko.observable(1);
self.pageSize = ko.observable(10);
self.pageCount = ko.observable();
self.itemCount = ko.observable();
};
我面對的問題是,當我對我的操作方法發送此視圖模型的實例,我得到一個錯誤:
The value 'null' is not valid for property
這是因爲我的服務器端ViewModel屬性不接受客戶端ViewModel的null
和undefined
屬性,即使我將它們設置爲可爲空。讓服務器端ViewModel接受空屬性的唯一方法是根本不發送它們。這是我的嘗試:
var GridFiltersViewModel = function() {
// the properties from before
self.removeEmptyProperties = function() {
for (var property in self) {
if (self[property] === null || self[property] === undefined) {
delete self[property];
}
}
};
};
不用說,它不起作用。目前,當方法結束時,我最終得到一個undefined
對象。我也嘗試在運行該方法之前將knockout ViewModel轉換爲JavaScript對象(使用ko.toJS()
),但我得到了相同的結果。
我在做什麼錯在這裏,我該怎麼做對不對?
還要注意,雖然,你不是用圓括號拆開你的可觀察的檢查...所以當你檢查self [property]的時候,你會在原始代碼中取回原始函數對象。應該是自己[財產]()。可能是你痛苦的根源。 –
括號不是我的痛苦來源,但沒關係,您的解決方案效果很好! – Alternatex