1

Ryan Niemeyer の Knockout-Kendo.js ライブラリを使用しています。次のように定義された kendodropdown があります。

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

whereLanguagesは観測可能な配列でLanguageあり、観測可能なものです。私のアプリケーションでは、アイテムはLanguages配列から削除されます (これは kendodropdown のデータソースです)。配列に言語が残っていない場合、kendo ドロップダウンには最後に使用可能な言語が表示されます。

次のように、Language に空の値を割り当てています。

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引数を渡すと、バインディングはオブザーバブルでウィジェットを提供します。単に呼び出すだけで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 に答える