1

onselect イベントで項目 'data-id' 属性を取得しようとしていますが、うまくいきません。

ここに私のコード:

    createControl: function (n, cm) {
        switch (n) {
            case 'ColorTextBox':
                var mlb = cm.createListBox('ColorTextBox', {
                    title: 'color texto',
                    onselect: function (v) {
                        var ed = tinymce.activeEditor;
                        ed.formatter.register('custom_format', { inline: 'span', styles: { color: '%value' }, classes: 'color_text', attributes: { 'data-color': '%value' } });
                        ed.formatter.apply('custom_format', { value: v });
                    }
                });

                for (i in CssStyles.colors.text) {
                    mlb.add('color texto #' + i, CssStyles.colors.text[i], attributes = { 'data-id': i });  //-> Is this attribute reachable from onselect event or is there a way?
                }

                return mlb;
                break;
            }
        }
    }

助言がありますか?どうもありがとうございました。

4

1 に答える 1

1

わかりました、解決しました。方法は、mlb オブジェクトから反復して、リスト項目と同じ属性 data-id を取得することです。最善の方法ではないかもしれませんが、現時点ではより良い方法を見つけることができませんでした。

変更されたコードは次のとおりです。

createControl: function (n, cm) {
    switch (n) {
        case 'ColorTextBox':
            var mlb = cm.createListBox('ColorTextBox', {
                title: 'color texto',
                onselect: function (v) {
                    var ed = tinymce.activeEditor;
                    var id;

                    for (i in mlb.items) {
                        if (mlb.items[i]['data-color'] == v) {
                            id = mlb.items[i]['data-id'];
                        }
                    }

                    ed.formatter.register('custom_format', { inline: 'span', styles: { color: '%value' }, classes: 'colors_text_' + id, attributes: { 'data-index': '%value' } });
                    ed.formatter.apply('custom_format', { value: v });
                }
            });

            for (i in CssStyles.colors.text) {
                mlb.add('color texto #' + i, CssStyles.colors.text[i], attributes = { 'data-id': i, 'data-color': CssStyles.colors.text[i] });
            }

            return mlb;
            break;
        }
    }
}

お役に立てれば幸いです。よろしく。

于 2013-07-24T07:37:08.913 に答える