2014-01-24 101 views
1
<input type="hidden" name="isActive" data-bind="value : booleanValue" /> 

在上面的代碼中,booleanvalue包含布爾值(即true或false.But),但保存它時轉換爲字符串,因爲在輸入標記中綁定了值。需要在html中發送布爾值

回答

2

這是如何挖空的作品,但是你可以創建一個擴展器,爲你的字符串 - >布爾對話。已經有一個數值轉換in the documentation一個例子你可以很容易地修改:

ko.extenders.boolean = function(target, precision) { 
    var result = ko.computed({ 
     write: function(newValue) { 
      var current = target(),    
       valueToWrite = typeof newValue == 'string' ? 
           newValue.toLowerCase() == "true" : 
           newValue; 
      if (valueToWrite !== current) { 
       target(valueToWrite); 
      } else { 
       if (newValue !== current) { 
        target.notifySubscribers(valueToWrite); 
       } 
      } 
     } 
    }).extend({ notify: 'always' });  

    result(target()); 
    return result; 
}; 

而且你可以使用它:

ko.applyBindings({ 
    booleanValue: ko.observable(true).extend({boolean: true}) 
}); 

演示JSFiddle