2016-06-06 6 views
0

Ich verwende CKEditor als meinen WYSIWYG-Editor für die Texteingabe auf meiner Website. Und ich stieß auf ein Problem mit diesem Editor mit Angulars ng-Show-Direktive.Wie verwende ich CKEditor mit Angulars ngShow/ngHide Direktiven?

Wenn der Editor mit ng-show = "true" geladen wird, funktioniert der Editor gut. Das bedeutet, dass die Symbolleiste geöffnet wird, die Schaltflächen in der Symbolleiste funktionieren und der Text auch bearbeitet werden kann.

Wenn der Editor jedoch anfänglich mit ng-show = "false" geladen wird und später zu ng-show = "true" wechselt, wird die Symbolleiste immer noch angezeigt, aber das contenteditable Attribut wird aus irgendeinem Grund auf false gesetzt Schaltflächen sind deaktiviert.

Meine CKEditor-Instanz ist ein Inline-Editor und wird mit einer benutzerdefinierten Angular-Direktive geladen. Die HTML-Vorlage setzt das contentediable-Attribut auf true.

Antwort

0

Sie haben dieses Problem, weil CKEditor die textarea seit Beginn des HTML-Rendering zu ändern versucht, aber die textarea gab es noch nicht, da die ng-show Bedingung noch nicht erfüllt wurde.

Es gibt Winkelmodule für CKEDITOR, die wir im Internet verwenden können. Sie können einen auswählen und verwenden.

+0

Ich dachte, dass ng-show die Elemente auf das DOM setzt und css verwendet, um das Element zu verstecken? Es könnte sein, dass es nicht existiert, wenn ckeditor versucht, sich einzuklinken, aber warum sehe ich dann die ckeditor-Symbolleiste? – tyler

+0

Ich weiß es nicht. Das ist auch komisch für mich. Aber der Javascript-Fehler zeigt das. –

+0

@tyler Ich verwende [AlloyEditor] (http://alloyeditor.com/demo/), die auf CKEditor gebaut wird. Ich stehe auf demselben Problem fest. Hast du dieses Problem gelöst? –

0

Versuchen Sie ng-if instread. Es macht den Herausgeber im Grunde überhaupt nicht im Gegenteil. Es scheint im obigen Szenario gut zu funktionieren.