我正在使用Ryan Niemeyer的Knockout-Kendo.js库。我有一个kendodropdown定义如下:

<input id="availableLanguagesDropdown" data-bind="kendoDropDownList: { data: Languages, value:Language }" onchange="onAvailableLanguageChangeHandler();" />


其中Languages是可观察数组,而Language是可观察数组。在我的应用程序中,项目已从Languages数组(这是kendodropdown的数据源)中删除。如果数组中没有剩余的语言,则kendodropdown显示最后可用的语言。

我在像这样的语言上要求空值:

omega.Language("");


但是,下拉菜单中仍会显示最后可用的语言。我认为我应该刷新kendodropdown。在kendoUI的文档中,它是这样完成的:

var dropdownlist = $("dropdownlist").data("kendoDropDownList");
// re-render the items in drop-down list.
dropdownlist.refresh();


但是当我使用Knockout-Kendo.js库时,我不确定该怎么做。有人可以告诉我没有项目时如何刷新下拉菜单吗?当其中没有项目时,这是否可以帮助我显示空的下拉菜单?感谢您的时间!

最佳答案

如果您传递widget参数,绑定将以可观察的方式为您提供小部件。看起来简单地调用refresh()并不能解决问题。我必须使用text方法将其清空。

就像是:

<input id="availableLanguagesDropdown" data-bind="kendoDropDownList: { data: Languages, value:Language, widget: dropDown }" />


使用JS:

var ViewModel = function() {
    this.Languages = ko.observableArray(["one", "two", "three"]);
    this.Language = ko.observable("two");

    this.dropDown = ko.observable();

    this.removeLanguages = function() {
        this.Languages([]);
        this.Language("");
        this.dropDown().text("");
    };
};


此处的示例:http://jsfiddle.net/rniemeyer/GQqwY/

似乎我应该尝试在库本身中解决此问题。我一直希望获得对窗口小部件的访问权并调用其方法仅用于高级或不得已的用途。

关于javascript - 使用Knockout-Kendo.js库刷新KendoDropDown,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12051943/

10-11 07:07