1

我有一个非常困难的情况(对我来说)。我为 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)

谁能给我一些关于可能发生的事情以及为什么会出现此错误的建议?

4

1 回答 1

1

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

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

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

请参阅editor.setMode文档

PS。editor.setData也是异步的。

于 2013-10-18T06:37:13.150 回答