1

既存の KendoUI ウィジェット (オートコンプリート) を拡張しようとしています。私たちのアプリケーションはすでにオートコンプリート ウィジェットの多くのインスタンスを使用しているため、現在のウィジェットを拡張する新しいウィジェットを作成するのではなく、既存のウィジェットを置き換えたいと考えています。

私はすでにこのトピックを見つけました: kendo-ui autocomplete extend、しかし残念ながらそれは新しいものを作成することを指しています.

次のコードを試しました:

   var plg = kendo.ui.AutoComplete.extend({
        options: {
            name: 'AutoCompleteMyOne'
        },
        init: function (_element, _options)
        {
            kendo.ui.AutoComplete.fn.init.call(this, _element, _options);

         /*...*/
        }
    });
    kendo.ui.plugin(plg);

ポイントは、オプションの name-attribute です。名前が「AutoComplete」のみの場合、初期化は機能しなくなります: この行は無限ループで終了します:

kendo.ui.AutoComplete.fn.init.call(this, _element, _options);

ベース初期化を呼び出すにはどうすればよいですか、それとも本当に上書きされますか?

4

1 に答える 1

4

オートコンプリート ウィジェットを置き換えると、コードは効果的に独自のinitメソッドを再帰的に呼び出します。したがって、既存のメソッドを保存し、そのメソッドを呼び出す必要があります。たとえば、次のようにします。

var plg = (function (init) {
    return kendo.ui.AutoComplete.extend({
        options: {
            name: 'AutoComplete'
        },
        init: function (_element, _options) {
            // modify the placeholder
            _options.placeholder += " (custom)";

            init.call(this, _element, _options);

            /*...*/
        }
    });

})(kendo.ui.AutoComplete.fn.init);
kendo.ui.plugin(plg);

(デモ)

于 2014-03-05T15:13:53.987 に答える