启用和禁用时,kendo组合框会出错

时间:2013-02-05 14:52:23

标签: combobox kendo-ui

我正在使用kendo组合框。我写了下面的代码来启用和禁用组合框

  function enableDisableFrameworkAndAltFrameworkVersion(platformVersion) {

        var comboBox = $("#selFrameworkVersion").data("kendoComboBox");

        if (platformVersion === 1 ) {
            comboBox.enable(false);

        }
    }

但是这段代码给我的错误是“Uncaught TypeError:无法调用方法'启用'未定义”

请帮忙。提前谢谢。

现在我在下面的链接中关注了一个示例 Disable kendo combo

所以现在我改变了我的html中的代码并将启用的参数添加到kendo组合框中,如下所示

<input  id="selFrameworkVersion" data-bind="kendoComboBox: { dataTextField: 'Name', dataValueField: 'Id', data:  $root.versionListByProductType, value:  $root.editFrameworkVersion, enabled: enableFrameWorkCombo} />

在我的视图模型中,我声明了一个observable,如下面的

self.enableFrameWorkCombo = ko.observable(true);

然后改变我的功能如下

function enableDisableFrameworkAndAltFrameworkVersion(platformVersion) {

    var comboBox = $("#selFrameworkVersion").data("kendoComboBox");

    if (platformVersion === 1 ) {
        $('#multiAltVersion').attr("disabled", true);
        //comboBox.enable(false);
        self.enableFrameWorkCombo(false);
        return;
    }
    else if (platformVersion === 2 || platformVersion === 3) {
        //comboBox.enable(true);
        self.enableFrameWorkCombo(true);
        $('#multiAltVersion').attr("disabled", true);
    }
    else {
        //comboBox.enable(true);
        self.enableFrameWorkCombo(true);
        $('#multiAltVersion').attr("disabled", false);
    }
}

现在它给了我错误

Uncaught Error: Unable to parse bindings.
Message: ReferenceError: enableFrameWorkCombo is not defined;
Bindings value: kendoComboBox: { dataTextField: 'Name', dataValueField: 'Id', data: $root.versionListByProductType, value:  $root.editFrameworkVersion, enabled: enableFrameWorkCombo, optionsCaption: 'Please select Version...' }

我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

执行时显示"Uncaught TypeError: Cannot call method 'enable' of undefined "的事实:

function enableDisableFrameworkAndAltFrameworkVersion(platformVersion) {
    var comboBox = $("#selFrameworkVersion").data("kendoComboBox");
    if (platformVersion === 1 ) {
        comboBox.enable(false);
    }
}

表示comboBoxundefined。由于计算结果$("#selFrameworkVersion").data("kendoComboBox")表示存在标识为selFrameworkVersion的HTML元素,但它不是kendoComboBox

请检查当您调用此函数时,kendoComboBox实际上已初始化。

编辑:

以下示例(在http://jsfiddle.net/OnaBai/qtaAS/上运行)启用/禁用使用上述功能的ComboBox ...

function enableDisableFrameworkAndAltFrameworkVersion(platformVersion){         var comboBox = $(“#selFrameworkVersion”)。data(“kendoComboBox”);         console.log(“combobox”,comboBox);         if(platformVersion === 1){             comboBox.enable(假);         } else {             comboBox.enable(真);         }     }

var viewModel = kendo.observable({
    data                : [
        { "Id": 1, "Name": "node1" },
        { "Id": 2, "Name": "node2" },
        { "Id": 3, "Name": "node3" },
        { "Id": 4, "Name": "node4" },
        { "Id": 5, "Name": "node5" }
    ],
    enableFrameWorkCombo: function () {
        alert("hello");
    }
});

$("#disable").on("click", function () {
    enableDisableFrameworkAndAltFrameworkVersion(1);
});
$("#enable").on("click", function () {
    enableDisableFrameworkAndAltFrameworkVersion(2);
});

kendo.bind($("#selFrameworkVersion"), viewModel);

HTML是:

<div><a href="#" id="disable" class="k-button">Disable</a></div>
<div><a href="#" id="enable" class="k-button">Enable</a></div>

<input id="selFrameworkVersion"
       data-role="combobox"
       data-text-field="Name"
       data-value-field="Id"
       value="2"
       data-bind="source : data, enabled: enableFrameWorkCombo"/>