聚合物核心选择器的Knockout自定义绑定处理程序 - 设置'选择'属性未更新元素

时间:2015-03-05 17:52:21

标签: knockout.js polymer bindinghandlers

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

然后$(元素).attr('selected')总是被“选中”。

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

1 个答案:

答案 0 :(得分:0)

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

element.selected = valueAccessor();

或阅读:

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

希望有所帮助。