【发布时间】:2013-11-26 16:54:10
【问题描述】:
我有一些 html 输入元素绑定到具有 C# 类型“双”属性的对象。有没有办法可以将输入的值绑定到这些属性,但如果实际属性为零而不是“0”,则不显示任何内容?
【问题讨论】:
标签: knockout.js bind
我有一些 html 输入元素绑定到具有 C# 类型“双”属性的对象。有没有办法可以将输入的值绑定到这些属性,但如果实际属性为零而不是“0”,则不显示任何内容?
【问题讨论】:
标签: knockout.js bind
您可以在视图模型中使用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);
}
};
这个想法是,它在绑定中创建一个可写计算,以放置在实际值和您的输入之间。
【讨论】: