發生這種情況是因爲空文本框的值爲「」(空字符串),但不是null。
因此,在設置新值之前,您應該檢查值是否爲空字符串,如果是這樣 - 手動分配null。
Knockout的更新。 你可以編寫自定義的ko綁定,它會爲你做所有事情。 下面是例子(可能不是最好的一個):
的Javascript:
ko.bindingHandlers.nullableValue = {
init: function (element, valueAccessor, allBindingsAccessor) {
var underlyingObservable = valueAccessor();
var interceptor = ko.dependentObservable({
read: underlyingObservable,
write: function (value) {
if (value == '') {
underlyingObservable(null);
return;
}
underlyingObservable(value);
}
});
ko.bindingHandlers.value.init(element, function() { return interceptor; }, allBindingsAccessor);
},
update: ko.bindingHandlers.value.update
};
的Html
<input type="text" data-bind="nullableValue: myNullableProperty" />
希望它能幫助。
對不起,我已經更新了它使問題更清楚的問題,我使用了knockout和MVVM,所以我不寫任何代碼來更新值,我相信問題在於BreezeJS庫。 – 2013-03-21 08:16:30
雖然你當然可以寫一個自定義綁定,但我們認爲你不應該爲這個常見的情況。我們將改進我們的DataType.Parse邏輯來正確處理這個問題;不能說多快......但很快。 – Ward 2013-03-22 06:43:24