禁用停用选择选项标题

在淘汰赛2.3.0版本中,引入了optionsAfterRender绑定,以便可以灵活地更改选项。

我想停用选项标题。 目前我正在做

<select data-bind="options: items, optionsCaption:'please select', optionsAfterRender: function(option, item) { ko.applyBindingsToNode(option, {disable: !item}, item); }"></select>

哪些工作,但我必须复制并粘贴optionsAfterRender函数无处不在。 我一直在试图创建一个自定义绑定处理器来在一个地方做,但我有困难。 这是我迄今为止的bindingHandler:

ko.bindingHandlers.disableOptionsCaption = {
    init: function (element) {

        ko.applyBindingsToNode(element, {
            optionsAfterRender: function (option, item) {

                ko.applyBindingsToNode(option, {
                    disable: !item
                }, item);

            }
        });

    }
};

我也在这里创建了一个小提琴,它显示了工作版本和非工作版本。 任何帮助,将不胜感激!


您应该将所有绑定一起应用,而不是一步一步地执行,如下所示:

HTML

<select data-bind="disableOptionsCaption:{}"></select>  

JS

ko.bindingHandlers.disableOptionsCaption = {
    init: function (element,valueAccessor, allBindingsAccessor, viewModel) {

        ko.applyBindingsToNode(element, {
            options: viewModel.items,
            optionsCaption: 'please select',
            optionsAfterRender: function (option, item) {

                ko.applyBindingsToNode(option, {
                    disable: !item
                }, item);

            }
        });
    }
};
链接地址: http://www.djcxy.com/p/14643.html

上一篇: Knockout disable select option caption

下一篇: jQuery hasAttr checking to see if there is an attribute on an element