【发布时间】:2012-11-14 19:14:37
【问题描述】:
我在 Backbone 视图中有一个 CKEditor 实例,它带有一个插件,可以在点击时将编辑器中的任何文本发布到我的网站。我也想在点击时清除 CKEditor,但使用 setData 不起作用。它会闪烁,好像 某事 正在发生,但随后会重置为已经存在的相同数据。
在插件内部是这样调用的:
注意:THIS 是引用主干视图的变量
CKEDITOR.plugins.add( 'post', {
init: function( editor ) {
editor.addCommand('post', {
exec: function(editor) {
THIS.model.postMessageAttempt(editor.getData());
THIS.options.data = "";
editor.setData("");
}
});
editor.ui.addButton('Post', {
label: THIS.i18n.postText(),
command: 'post'
});
}
} );
我也尝试过使用setData("some text") 和THIS.editor.setData("")(我引用了保存在视图中的编辑器),但两者的结果相同。关于出了什么问题的任何想法?
编辑
我也尝试过使用 CKEditor 与 jQuery 的集成与此调用 THIS.$el.find('textarea' + this.id).val(""); 并且它不再闪烁,但它仍然没有清除编辑器。
【问题讨论】:
-
所以除了
setData(...)什么都没做之外,一切正常,对吧? -
如果你
setData('<p></p>'),它是否有效? -
正确。这也行不通。
-
所以
getData有效,setData无效,并且两个editor变量都引用相同的东西。您是否在 Backbone 之外尝试过这个?我想知道 CK 和 Backbone 是否为了控制 DOM 元素而互相争斗。 -
我没有。不过,我可以使用
insertHtml,所以如果是的话,那只是在这种非常特殊的情况下。
标签: javascript jquery backbone.js ckeditor backbone-views