2013-11-26 39 views
0

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

回答

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/