这是工作:
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”是引导按钮。
问题是,您使用的Checked
与按钮,这是不允许的结合,而不是您可以使用点击绑定。 检查此琴:
http://jsfiddle.net/a8wa8/7/
更新:
是的,你可以通过使用KO实现这个css binding
。 检查该更新的小提琴:
更新小提琴
在已检查的结合仅与像复选框“可检验”控制工程( <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。