我有一些html输入元素绑定到一个具有C#type“double”属性的对象。有没有办法可以将输入值绑定到这些属性,但如果实际属性为零而不是“0”则不显示任何内容?
答案 0 :(得分:2)
您可以在视图模型中使用writeable computed,以确保返回空字符串而不是0。
或者,您可以使用自定义绑定来避免在视图模型方面弄乱它。示例可能如下所示:
ko.bindingHandlers.valueNoZero = {
init: function(element, valueAccessor, all, data, context) {
//create a writeable computed on-the-fly to handle not showing zero values
var formatter = ko.computed({
read: function() {
var value = ko.unwrap(valueAccessor());
//if value is zero return empty
return value || "";
},
write: function(newValue) {
var value = valueAccessor();
//write numeric value
value(!newValue || isNaN(newValue) ? 0 : parseInt(newValue, 10));
},
disposeWhenNodeIsRemoved: element
});
ko.applyBindingsToNode(element, { value: formatter }, context);
}
};
这个想法是它在绑定中创建一个可写入的可写入,以放置在实际值和输入之间。