2013-06-14 3 views
0

Очень простой data-bind="checked: someBool", который не проверяет мой вход для радио.Связывание проверено на вход радио с использованием библиотеки отображения нокаута

<input type="radio" data-bind="checked: someBool" />radio

Код ко ...

var data = { someBool: true }; 
var vm = ko.mapping.fromJS(data); 
ko.applyBindings(vm); 

Радио ООН-проверено. Я что-то упускаю?

Live: http://jsbin.com/exokav/4/edit

+0

Возможный дубликат [Радиокнопки Knockoutjs] (http://stackoverflow.com/questions/16259537/radio-buttons-knockoutjs) – nemesv

ответ

0

Вам нужно добавить атрибут значение для радио-кнопки на карте в. Также значение не будет логическим, но после этого будет строка. Я использую следующее расширение для использования логических значений для переключателей. (Жить: http://jsbin.com/exokav/8):

ko.bindingHandlers.checkedAsBool = { 
    init: function (element, valueAccessor, allBindingsAccessor) { 
     var observable = valueAccessor(), 
      interceptor = ko.computed({ 
       read: function() { 
        var val = ko.utils.unwrapObservable(observable); 
        return ((val !== null) && (typeof val !== "undefined") ? val.toString() : val); 
       }, 
       write: function (newValue) { 
        observable(newValue === "true"); 
       }, 
       owner: this 
      }); 
     ko.applyBindingsToNode(element, { checked: interceptor }); 
    } 
}; 

на основе this ответа по RP Нимейера.

+0

Off topic: ;-) Если вам нравится этот ответ, возможно, вы также можете отметить правильный ответьте здесь: http://stackoverflow.com/q/9475893/932282 – mhu

+0

lol вы правы @mhu. сделано и сделано. Вернемся к этому сообщению, я помечаю этот ответ как правильный, хотя это облом, потому что сайт нокаута заставляет его выглядеть так просто:/http://i.imgur.com/U0qah8P.png скриншот, ссылка на полную статью здесь: http://knockoutjs.com/documentation/checked-binding.html –

+0

Спасибо, теперь я гуру ;-). Да, но этот образец также использует флажки для булевых значений. – mhu

Смежные вопросы