1

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

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

whereLanguages是 observable 数组并且Language是 observable。在我的应用程序中,项目从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 库时,我不确定我该怎么做。有人可以告诉我如何在没有项目时刷新下拉列表吗?当其中没有项目时,这会帮助我显示空下拉列表吗?感谢您的时间!

4

1 回答 1

1

widget如果您传递参数,绑定将在 observable 中向您提供小部件。看起来简单地调用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/

似乎我应该尝试在库本身中解决一些问题。我一直希望访问小部件并调用其方法仅用于高级或最后的使用。

于 2012-08-21T13:04:01.593 回答