Динамически обновлять вид плагина в ckeditor 5 - PullRequest
1 голос
/ 08 апреля 2019

Я использую ckEditor 5. Моя цель - создать простую функцию поиска для выполнения некоторых вызовов ajax, позволить пользователю выбирать из списка результатов и действовать соответственно (вставляя ссылку, или изображение, или мультимедиа ...).

Проблема в том, что я хочу динамически обновлять вид плагина.Что-то похожее на это: https://github.com/ckeditor/ckeditor5/issues/520,, но я использую выпадающий список на панели инструментов (я начал с плагина EmbedMedia и сейчас не слишком заботился о дизайне).Я задал тот же вопрос на их мерзавце (https://github.com/ckeditor/ckeditor5/issues/1681)

Мой шаблон такой:

        this.setTemplate( {
            tag: 'form',

            attributes: {
                class: [
                    'ck',
                    'ck-results-form'
                ],

                tabindex: '-1'
            },

            children: [
                this.searchInputView,
                this.searchButtonView,
                {
                    tag: 'div',
                    attributes: {
                        class: [ 'ck-result-grid' ]
                    },
                    children: this.items
                },
                this.saveButtonView,
                this.cancelButtonView,

            ]
        } );


// updateList method is like this:
    updateList( valuesArray ) {
        console.log(this.items);
        this.items = new Array();
        console.log(this.items);
        for (let i = 0; i < valuesArray.length && i < 20; i++) {
            const urlView = new TableSizeGridBoxView(i, valuesArray[i]);
            urlView.on('select-url', () => {
                this._selectedUrl = valuesArray[i];
            });
            this.items.push( urlView );
        }
        console.log(this.items);
        //do something here to force refresh or render the section
    }

Я могу получить

this

Мой ожидаемый результат после поиска - получить

this

и, наконец, выбрать результат.

В настоящее время я вижу, что объект правильно инициализирован иобновляется с помощью console.log, но представление не обновляется ... оно остается пустым, как на первом изображении (поэтому я думаю, что должно быть что-то, что я должен быть в состоянии поместить туда, где я написал //do something here to force refresh or render the section).

Более того, я могу сказать, что TableSizeGridBoxView работает правильно, потому что я могу отображать произвольные значения, если я вызываю цикл for при инициализации представления.

...