Knockout启用绑定不适用于kendocombobox

时间:2015-07-01 07:19:16

标签: javascript asp.net knockout.js kendo-ui

XElement element = null;
int? x = (int?) element; // null
int y = (int) element; // Bang

组合框是一个复杂的元素,由多个元素组成(输入,箭头按钮,保持值的不可见输入),如下所示。上面的表达式在不可见的输入元素上添加了绑定表达式。

Html.Kendo().ComboBoxFor(m => m.CityId).HtmlAttribute("data-bind", "enable: IsCityEnabled")

因此模型的变化只会影响隐形元素

我需要一个通用的解决方案,而无需为淘汰模型成员添加订阅者。

1 个答案:

答案 0 :(得分:0)

解决方案

        var control = $("#" + ControlName).data("kendoComboBox");
        // configuration of the observer:
        var config = { attributes: true, childList: false, characterData: true };
        // create an observer instance
        var observer = new MutationObserver(function (mutations) {
            mutations.forEach(function (mutation) {
                if (mutation.type === "attributes") {
                    if (mutation.attributeName === "disabled") {
                        control.enable(!mutation.target.disabled);
                        observer.disconnect();
                        observer.observe(control.element[0], config);
                    }
                }
            });
        });
        // pass in the target node, as well as the observer options
        observer.observe(control.element[0], config);