绑定处理程序和HMTL。
ko.bindingHandlers.radioGroupChanged = {
init: function (element, valueAccessor, allBindingAccessor, viewModel, bindingContext) {
var value = valueAccessor();
var newValueAccessor = function () {
return {
change: function () {
var selectedValue = $(element).attr('selected');
value(selectedValue);
}
}
};
ko.bindingHandlers.event.init(element, newValueAccessor, allBindingAccessor, viewModel, bindingContext);
},
update: function (element, valueAccessor, allBindingsAccessor, viewModel, bindingContext) {
$(element).attr('selected', valueAccessor()());
}
}
<paper-radio-group style="position:absolute; left:160px; top:0px;" data-bind="radioGroupChanged: MessagePriority" }">
<paper-radio-button label="High">
</paper-radio-button>
<paper-radio-button label="Medium">
</paper-radio-button>
<paper-radio-button label="Low">
</paper-radio-button>
</paper-radio-group>
当它点击更新功能时,如果我手动更新无线电组元素的选定属性,它会立即变为"选择"。
$(element).attr('selected','0');
则$(element).attr("selected")始终为"selected"。
我不知道为什么它没有保留价值。
selected
属性并不意味着指示选择了哪个元素,而只是描述初始状态。DOM元素上的实际selected
属性包含此信息。因此,在您的情况下,您将执行以下操作:
element.selected = valueAccessor();
或读取:
if(element.selected == 1) alert("Yeah Medium was selected");
希望能有所帮助。