使用Twitter的引导按钮组无线电与淘汰赛绑定选择(Use Twitter Bootstrap b

2019-08-19 06:50发布

这是工作:

view.html

<div><input type="radio" name="radioPriority" data-bind="checked: priority" value="want" style="margin-top: -3px; margin-right: 3px;" />I want to</div>
<div><input type="radio" name="radioPriority" data-bind="checked: priority" value="need"  style="margin-top: -3px; margin-right: 3px;"/>I need to</div>

controller.js

function feedbackViewModel() {
    var self = this;
    self.priority = ko.observable("want");
    //lots of other stuff
}

正如预期的那样,当你选择第二个单选优先观察到的值更改为“需要”。 不过,我想使用Twitter的引导按钮组作为一台收音机。 下面是HTML我有,但预期不会改变观察到:

<span class="btn-group" data-toggle="buttons-radio">
    <button data-bind="checked: priority" type="button" class="btn" value="want">I want to</button>
    <button data-bind="checked: priority" type="button" class="btn" value="need">I need to</button>
</span>

更新我有一个去的jsfiddle这里: http://jsfiddle.net/a8wa8/6/ “优先级为1”是标准的无线电选择和“优先级2”是引导按钮。

Answer 1:

问题是,您使用的Checked与按钮,这是不允许的结合,而不是您可以使用点击绑定。 检查此琴:

http://jsfiddle.net/a8wa8/7/

更新:

是的,你可以通过使用KO实现这个css binding 。 检查该更新的小提琴:

更新小提琴



Answer 2:

在已检查的结合仅与像复选框“可检验”控制工程( <input type='checkbox'>或单选按钮( <input type='radio'>

但是,你有button在你的第二个例子,其中自举只是模仿单选按钮组的外观,因此checked绑定不起作用。

但是你可以用click绑定 ,你的价值传递给您观察到的:

<span class="btn-group" data-toggle="buttons-radio">
     <button data-bind="click: function() { priority2('want') }" 
             type="button" class="btn" value="want">I want to</button>
     <button data-bind="click: function() { priority2('need') }" 
             type="button" class="btn" value="need">I need to</button>    
</span>

你可以隐藏这个自定义绑定背后:

ko.bindingHandlers.valueClick = {
    init: function(element, valueAccessor, allBindingsAccessor, 
                  viewModel, bindingContext) {     
        var value = valueAccessor();
        var newValueAccessor = function() {
            return function() {
                value(element.value); 
            };
        };
        ko.bindingHandlers.click.init(element, newValueAccessor, 
            allBindingsAccessor, viewModel, bindingContext);
    },
}

然后你可以使用它像:

<span class="btn-group" data-toggle="buttons-radio">
     <button data-bind="valueClick: priority2" 
             type="button" class="btn" value="want">I want to</button>
     <button data-bind="valueClick: priority2" 
             type="button" class="btn" value="need">I need to</button>    
</span>

演示的jsfiddle。



文章来源: Use Twitter Bootstrap button group as radio select with knockout bindings