Динамический выбор CKeditor в диалоге - PullRequest
0 голосов
/ 14 марта 2011

Пытаясь выяснить, как динамически заполнить меню выбора в диалоговом окне ... во всех моих попытках до сих пор я не смог заставить его работать правильно.

Ответы [ 3 ]

8 голосов
/ 27 июля 2011

Я думаю, что вы пытаетесь динамически заполнить раскрывающийся список плагин. И по какой-либо причине, этот выпадающий список должен быть заполнен в то время как диалог открыт.

Если так, вот что я сделал для аналогичной ситуации:

{
    type: 'select',
    id: 'exam_ID',
    label: 'Select Exam',
    items : [ ['--- Select an Exam---',0] ],
    setup : function(element) {
        var element_id = '#' + this.getInputElement().$.id;
        $.ajax({
            type: 'POST',
            url: 'lib/ckeditor/plugins/customExam/utilities/listExams.aspx',
            data: '{"cpID":' + window.parent.$("#cpID").val() + '}',
            contentType: 'application/json; charset=utf-8',
            dataType: 'json',
            async: false,
            success: function(data) {
                $.each(data.DATA, function(index, item) {
                    $(element_id).get(0).options[$(element_id).get(0).options.length] = new Option(item[1], item[0]);
                });
            },
            error:function (xhr, ajaxOptions, thrownError){
                alert(xhr.status);
                alert(thrownError);
            } 
        });
    }

}

Ключ нашел идентификатор элемента, который устанавливает CKEditor, который не является id в определении элемента. Вы можете использовать это id для других функций, но если вы планируете выполнить какое-либо обновление элемента, вам нужно получить элемент CKEditor DOM.

Возможно, есть лучший способ сделать это, но это работает для меня.

1 голос
/ 21 августа 2014
elements: [
                {
                    type: 'select',
                    id: 'test',
                    label: 'test label',
                    items: [
                        ['Please Choose', '']
                    ],
                    onLoad: function(element) {
                        this.add('Option 1', '1');
                        this.add('Option 2', '2');
                    }              
               }
        ]

Если вы хотите добавить или удалить элементы, когда открывается диалог для редактирования.Вы можете использовать setup звонок.Поместите его выше или ниже onLoad определение.

                    setup: function(element) {
                        this.clear();

                        this.add('Please Choose', '');
                        this.add('Option 1', '1');
                        this.add('Option 2', '2');

                        this.setValue(element.getText());
                    },
1 голос
/ 14 марта 2011

Bob

Вот фрагмент, который изменяет элементы для существующего меню выбора. Но вы можете добавить свои собственные, получить значения динамически и т. Д.

        //for button we just want to limit the button type to button
    if ( dialogName == 'button' ) {

        // updates the info tab 
        var infoTab = dialogDefinition.getContents( 'info' );
        var typeDef = infoTab.get( 'type' );
        var buttonType = new Array("Button", "button");
        var myItems = new Array (buttonType); 
        typeDef['items'] = myItems;

Если это не поможет, предоставьте дополнительную информацию о фактических и ожидаемых результатах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...