Как динамически создавать пользовательские элементы управления - PullRequest
2 голосов
/ 16 февраля 2012

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

Итак, я использую пример http://fiddle.tinymce.com/gaaaab, который может создать mymenubutton в первый раз, но когда меняется раскрывающийся список, как мне повторно запустить этот элемент управления и повторно привязать массив json к mymenubutton?

    function generateTokensList(result) {
        tinymce.create('tinymce.plugins.ExamplePlugin', {
            createControl: function (n, cm) {
                switch (n) {
                    case 'mysplitbutton':
                        var c = cm.createSplitButton('mysplitbutton', {
                            title: 'My split button',
                            image: 'some.gif',
                            onclick: function () {
                                alert('Button was clicked.');
                            }
                        });

                        c.onRenderMenu.add(function (c, m) {
                            m.add({ title: 'Tokens', 'class': 'mceMenuItemTitle' }).setDisabled(1);

                            var insertVar = function (val) {
                                return function () { tinyMCE.activeEditor.execCommand('mceInsertContent', false, val); }
                            };

                            for (var i = 0; i < result.length; i++) {
                                var field = result[i].field;
                                var variable = insertVar(result[i].field);
                                m.add({ title: result[i].name, onclick: variable });
                            }
                        });

                        // Return the new splitbutton instance
                        return c;
                }

                return null;
            }
        });

        tinymce.PluginManager.add('example', tinymce.plugins.ExamplePlugin);
    }

1 Ответ

3 голосов
/ 22 февраля 2012

Решил это сам.Привязать данные к переменной и каждый раз вызывать var.

                c.onRenderMenu.add(function (c, m) {
                    m.add({ title: 'Tokens', 'class': 'mceMenuItemTitle' }).setDisabled(1);
                    var insertVar = function (val) {
                        return function () { tinyMCE.activeEditor.execCommand('mceInsertContent', false, val); }
                    };
                    for (var i = 0; i < tokens.length; i++) {
                        var field = tokens[i].field;
                        var variable = insertVar( '[['+tokens[i].name+']]');
                        m.add({ title: '[['+tokens[i].name+']]', onclick: variable });
                    }
                });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...