ckEditor - 当我尝试ck.setMode('source')时出错;然后是ck.setMode('wysiwyg');

时间:2013-10-17 22:23:38

标签: ckeditor

我有一个非常困难的情况(对我而言)。我已经为ckEditor创建了一个指令。实际上它和我在网上很多不同的地方看到的一样。这大部分时间都有效。但是我必须这样做才能让它在100%的时间内正常工作:

ngModel.$render = function () {
    if (typeof ngModel.$modelValue != 'undefined') {
        if (ngModel.$modelValue != null) {
            ck.setData(ngModel.$modelValue);
            timer = setTimeout(function () {
                ck.setData(ngModel.$modelValue);
            }, 1000);
            timer = setTimeout(function () {
                ck.setMode('source');
                ck.setMode('wysiwyg');
            }, 1000);
        }   
    }
};

注意以下几行:

ck.setMode('source');
ck.setMode('wysiwyg');

这样可行,但会出错:

Uncaught TypeError: Cannot read property 'on' of undefined ckeditor.js:299
CKEDITOR.editable.CKEDITOR.tools.createClass.proto.attachListener ckeditor.js:299
CKEDITOR.editable.CKEDITOR.tools.createClass.proto.setup ckeditor.js:304
k ckeditor.js:589
(anonymous function)

任何人都可以就可能发生的事情以及我收到此错误的原因给出一些建议吗?

1 个答案:

答案 0 :(得分:1)

如果你尝试这种方式会更好吗?

ck.setMode('source', function() {
    ck.setMode('wysiwyg');
} );

如果是,那么问题是由于这些方法是异步的。它们不能一个接一个地执行,但是你必须等到它们完成,所以它们接受一个然后执行的回调。

请参阅editor.setMode docs

PS。 editor.setData也是异步的。