【问题标题】:knockout binding to C# double initial value blank淘汰赛绑定到 C# 双初始值空白
【发布时间】:2013-11-26 16:54:10
【问题描述】:

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

【问题讨论】:

    标签: knockout.js bind


    【解决方案1】:

    您可以在视图模型中使用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/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-04
      • 1970-01-01
      • 1970-01-01
      • 2015-08-15
      • 2017-01-27
      相关资源
      最近更新 更多