Knockout.js 敲除绑定到C#双初始值空白

Knockout.js 敲除绑定到C#双初始值空白,knockout.js,bind,Knockout.js,Bind,我将一些html输入元素绑定到一个具有C#type“double”属性的对象。是否有一种方法可以将输入值绑定到这些属性,但如果实际属性为零而不是“0”,则不显示任何内容?您可以在视图模型中使用,以确保返回空字符串而不是0 或者,您可以使用自定义绑定,以避免在视图模型方面与之混淆。示例可能如下所示: ko.bindingHandlers.valueNoZero = { init: function(element, valueAccessor, all, data, context) {

我将一些html输入元素绑定到一个具有C#type“double”属性的对象。是否有一种方法可以将输入值绑定到这些属性,但如果实际属性为零而不是“0”,则不显示任何内容?

您可以在视图模型中使用,以确保返回空字符串而不是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);       
    }
};
其思想是,它在绑定中创建一个可写的计算程序,将其放置在实际值和输入之间

此处示例: