2016-11-13 4 views
8

Я использую TinyMCE в моей angular2 приложение в соответствии с директивой Приводимые здесь: https://www.tinymce.com/docs/integrations/angular2/TinyMCE, как цель перетаскивания для NG2-ДНА

Теперь я хотел бы в качестве цели капли для NG2-ДНА, как это:

<textarea dnd-droppable (onDropSuccess)="itemDropped($event)" id="{{elementId}}"></textarea> 

Однако события не проводятся. Я полагаю, что это имеет какое-то отношение к tinyMCE, заменяющему textarea iframe, но я еще недостаточно знаком с angular2, чтобы понять, как здесь можно использовать следующую ссылку. How to make tinymce textarea editor droppable?

Заранее благодарим за любые предложения!

+2

Вы нашли решение в конце? Мне нужно реализовать подобную вещь и будем благодарны за любую помощь. :) –

+0

Вы настраиваете что-либо, чтобы позволить tinyMCE знать, что textarea является элементом tinyMCE DOM? Как выглядит ваш компонент? –

+0

@ mc.suchecki, к сожалению, нет. Я закончил тем, что добавил область над надписью, которая была в порядке для моего использования для использования протипа ... Но, пожалуйста, поделитесь тем, что вы в конечном итоге используете :-) –

ответ

1

Есть некоторые проблемы, из-за которых это не работает.

Во-первых, как уже упоминалось, TinyMCE имеет свои собственные элементы, включая iframe для рендеринга фактического редактора. Iframe приводит к тому, что события в редакторе не перетекают вверх.

Добавление dnd-droppable в тексарию, которая заканчивается тем, что скрыта, не дает видимого элемента, чтобы его можно было накрыть.

Добавление элемента div вокруг текстового поля даст вам область с возможностью удаления в заголовке TinyMCE, но, к сожалению, не в редакторе. (из-за iframe).

Однако, используя встроенные события TinyMCE, вы все равно можете использовать редактор в качестве целевой цели. Вам также нужно добавить атрибут «paste_data_images».

tinymce.init({ 
    selector: '#' + this.elementId, 
    plugins: ['link', 'paste', 'table'], 
    skin_url: 'assets/skins/lightgray', 
    paste_data_images: true, 
    setup: editor => { 
     editor.on('drop', e => { 
      console.log(e); 
     }); 
    } 
}); 

Обратите внимание, что событие drop, которое вы получаете, является стандартным событием drop-event, которое не обрабатывается с помощью dnd. Я предполагаю, что это нормально для вашего дела, и если нет, вы можете обратиться к документации dnd, чтобы обработать ее дальше.

+0

Хорошая идея, спасибо! Мне нужно было указать в правильном направлении. :) Я постараюсь сегодня подойти к этому вопросу и сообщить о результатах - возможно, я смогу опубликовать полное решение здесь для дальнейшего использования. Я бы хотел, чтобы щедрость открылась на данный момент, но я до сих пор, конечно, самый лучший ответ. ;) –

Смежные вопросы