【问题标题】:kendo combobox giving error while enabling and disabling剑道组合框在启用和禁用时出现错误
【发布时间】:2013-02-05 14:52:23
【问题描述】:

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

  function enableDisableFrameworkAndAltFrameworkVersion(platformVersion) {

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

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

        }
    }

但是这段代码给我的错误是“Uncaught TypeError: Cannot call method 'enable' of undefined”

请帮忙。提前致谢。

现在我在下面这个链接上做了一个例子 Disable kendo combo

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

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

在我的视图模型中,我声明了一个如下所示的可观察对象

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...' }

我在这里做错了什么?

【问题讨论】:

  • 请帮帮我
  • 有人在吗?请帮我。头撞墙:(

标签: combobox kendo-ui


【解决方案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")的结果,意味着有一个ID为selFrameworkVersion的HTML元素,但它不是kendoComboBox

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

编辑:

以下示例(在http://jsfiddle.net/OnaBai/qtaAS/ 上运行)使用上述函数启用/禁用组合框...

function enableDisableFrameworkAndAltFrameworkVersion(platformVersion) {
        var comboBox = $("#selFrameworkVersion").data("kendoComboBox");
        console.log("combobox", comboBox);
        if (platformVersion === 1) {
            comboBox.enable(false);
        } else {
            comboBox.enable(true);
        }
    }

    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"/>

【讨论】:

  • 如果是这种情况,那么它也不应该在组合框中加载数据吗?我说的对吗?
  • 我说的是关于事情发生的顺序。它可能会加载数据,但在运行此函数之后。我只能看到一小部分代码,但如果控制台显示 undefined 没有 enable 并且我看到的唯一 enable 应用于名为 comboBox 的东西,那么 comboBox 需要是 @987654337 @.
  • 如何以及在哪里定义它?请告诉我。
  • 调用$("#selFrameworkVersion").kendoComboBox({...}),代码中的下一条指令调用函数enableDisableFrameworkAndAltFrameworkVersion。这可能吗?
  • 如果我尝试在您提到的代码中调用函数 enableDisableFrameworkAndAltFrameworkVersion 那么它会给出错误,如“get”、“set”或属性名称后跟“:”预期
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多