如何在 kendo 数据绑定函数中查找元素

How to find the element in kendo data binding function

在我正在处理的应用程序中,我需要在两种不同情况之一下禁用元素,一种是登录用户仅对表单具有只读访问权限,另一种是在字段上设置条件逻辑被满足。这些表单是动态生成的,构建在带有拖放字段的管理面板上。

我遇到的问题是满足条件逻辑情况但表单不是只读的。在我现在尝试的情况下,如果重新打开表单(已保存),它会禁用某些字段。

输入如下所示:

<input name="userName" id="userName" maxlength="64" type="text" class="k-textbox custom-disable" data-bind="value: formData.userName, disabled: isFormDisabled"> 

条件逻辑在输入上设置禁用 属性,并为 CSS 添加自定义禁用 class。 isFormDisabled 是 viewModel 的布尔值 属性。

我想做的是创建一个这样的函数:

ViewModel = kendo.observable({    
    ...,
    isFormDisabled: false,
    isElementDisabled: function (e) {
        var customDisabled = $(e.target).hasClass( "custom-disable" );
        return this.get("isEventDisabled")||customDisabled;
    },
    ...
});

并更改 disabled 到这个新函数的绑定,但由于 disabled 不是事件,当我记录 e 时它是未定义的 - 我如何找到绑定到回调迭代的元素?

Kendo Dojo

目前 Kendo 对 enable/disable 个元素有自己的方式,例如 this explains how to enable/disable a Kendo Combobox

这就是我最终弄清楚的 - 对于函数:

isElementDisabled: function (eID) {
    var me = this;
    var element = $("#" + eID);
    var customDisabled = $(element).hasClass("custom-disable");
    return me.get("isEventDisabled") || customDisabled;
}, 

和绑定 -

<input name="#: columnName #" id="#: columnName #"
    data-bind='value: #: dataContainer #.#: columnName #, disabled: isElementDisabled("#: columnName #")'
/>

由于元素的 ID 与列名匹配并且是唯一的,我可以通过将该 ID 作为 属性.

传递给绑定函数来找到它