0

绑定处理程序和 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'。

我不知道为什么它没有保留价值。

4

1 回答 1

0

selected 属性并不意味着选择了哪个元素,而仅描述了初始状态。DOM 元素上的实际selected 属性包含此信息。因此,在您的情况下,您将执行以下操作:

element.selected = valueAccessor();

或阅读:

if(element.selected == 1) alert("Yeah Medium was selected");

希望有帮助。

于 2015-03-06T21:06:58.320 回答