bootstrap3-wysiwyg编辑器对象取消定义

时间:2015-06-24 02:08:33

标签: javascript twitter-bootstrap-3 wysihtml5

我使用此富文本:https://github.com/bootstrap-wysiwyg/bootstrap3-wysiwyg

它工作正常,但我需要获取wysihtml5编辑器对象来运行一些命令

doc表示我可以使用此代码获取wysihtml5编辑器对象:

var wysihtml5Editor = $('#some-textarea').data("wysihtml5").editor;
wysihtml5Editor.composer.commands.exec("bold");

但是wysihtml5Editor还没有定义

记录$('#some-textarea')。data(“wysihtml5”)打印此:

Wysihtml5 {el: n.fn.init[1], toolbar: n.fn.init[1], editor:undefined}

如何获取编辑器对象?

2 个答案:

答案 0 :(得分:3)

我自己找到了答案,但无论如何,感谢Daemedeor和DA。!

在bootstrap3-wysihtml5.js中,createEditor方法没有返回,所以

this.editor =  this.createEditor(toolbarOpts);

this.editor未定义

我像这样添加回报

  createEditor: function(options) {
    options = options || {};

    // Add the toolbar to a clone of the options object so multiple instances
    // of the WYISYWG don't break because 'toolbar' is already defined
    options = $.extend(true, {}, options);
    options.toolbar = this.toolbar[0];

    return this.initializeEditor(this.el[0], options);
  }

一切都好!

答案 1 :(得分:0)

对于遇到这个问题的其他人(以及之前的答案扩展一下),我发现在那里导航wysihtml5编辑器的各种分支有点令人沮丧。

似乎还有许多问题浮出水面,或多或少与操作员问题有关("编辑返回未定义的问题和#34; - 问题)。

首先,对于初学者来说,这个问题似乎与这个特定的分支有关:

https://github.com/bootstrap-wysiwyg/bootstrap3-wysiwyg

关于使用" wysihtml5"获取wysihtml5编辑器对象的问题。数据选择器,文档说明:

  

您可以像这样访问wysihtml5编辑器对象:

var wysihtml5Editor = $('#some-textarea').data("wysihtml5").editor;
wysihtml5Editor.composer.commands.exec("bold");

为了使其正常工作,您需要确保您引用的文件(无论是 bootstrap3-wysihtml5.min.js 还是 bootstrap3-wysihtml5.all .min.js )包含此特定提交:

https://github.com/bootstrap-wysiwyg/bootstrap3-wysiwyg/commit/aee1fee7886b34d01e8f238d64d2e6fd9388608c

正如Daemedeor所说: https://github.com/bootstrap-wysiwyg/bootstrap3-wysiwyg/issues/131 - 该提交未合并到发行版,只包含源。

无论如何,改变这个:

this.initializeEditor(this.el[0], options);

到这个

return this.initializeEditor(this.el[0], options);

可能会帮助你(当然也适合我)。