Hogyan használhatom AngularJS adatok kötődés CKEditor?

szavazat
4

Hogyan kell menni erről?

Azt tudta, hogy az adatokat CKEditor segítségével textareaaz nameattribútum illő én modellt és egy scripttag ng:bind-templatehívja CKEDITOR.replace.

Aztán tett egy CKEditor bővítmény, amely felismeri a változásokat, és írja azokat vissza az textarea. A probléma az, hogy az textareaelveszti eseménykezelőkkel amikor CKEditor inicializálja és CKEditor nem felszedő változtatásokat textarea. Ez elgondolkodtat, hogy én megközelíti ezt a rossz irányba.

Következő Próbáltam használ ng:eval-order=LAST ng:eval=setupCKEditor()és beállítása a szerkesztő a setupCKEditor()funkciót. Ez nem működik, mert még ng:eval-order=LASTez a funkció még mindig fut, mielőtt a csomópontok jönnek létre.

Azt találtuk, hogy ha egy setTimeout(function () {...},0)körül CKEDITOR.replacesegít. Most már csak az a probléma, hogy ha megváltozik a modell nem átfestés a képernyőn, amíg egy másik mező szerkeszthető.

scope.$root.$eval(); Úgy tűnik, hogy javítani.

frissítés

Mi végül felhagy ezt, mivel soha nem tudtuk, hogy ez megbízhatóan működik. Áttért a TinyMCE a Szög-UI egy darabig, majd végül az épület valamit szokás.

A kérdést 21/10/2011 16:54
a forrás felhasználó
Más nyelveken...                            


2 válasz

szavazat
0

Ez a fajta munka a onchangeplugin http://alfonsoml.blogspot.com/2011/03/onchange-event-for-ckeditor.html .

angular.directive("my:ckeditor", function (expression, compiledElement) {
    return function fn(element) {
        var scope = this;

        setTimeout(function () {
            CKEDITOR.replace("editor-" + index, {extraPlugins: 'onchange'});

            scope.$watch("layers[" + index + "].src", function () {
                if (!CKEDITOR.instances["editor-" + index]) return;
                if (scope[expression] == CKEDITOR.instances["editor-" + index].getData()) return;
                CKEDITOR.instances["editor-" + index].setData(scope[expression]);
            });

            CKEDITOR.instances["editor-" + index].on("change", function () {
                scope[expression] = CKEDITOR.instances["editor-" + index].getData();
                scope.$root.$eval();
            });
        }, 0);
    };
});

frissítés

Ez csak tesztelték a v0.10.6

Válaszolt 24/10/2011 13:12
a forrás felhasználó

szavazat
0

A teljesség kapcsolódik egy olyan modul, hogy egy szögletes irányelv . Már nem használtam még, így nem tudom kommentálni, hogy mennyire jól működik / integrálja.

Válaszolt 08/01/2014 03:11
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more