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

时间:2013-11-26 16:54:10

标签: knockout.js bind

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

1 个答案:

答案 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);       
    }
};

这个想法是它在绑定中创建一个可写入的可写入,以放置在实际值和输入之间。

此处示例:http://jsfiddle.net/rniemeyer/Zt25k/