объект редактора bootstrap3-wysiwyg всегда не определен

Я использую этот форматированный текст: 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}

Как получить объект-редактор?


person bigzhu    schedule 24.06.2015    source источник
comment
У вашего редактора действительно есть идентификатор some-textarea?   -  person DA.    schedule 24.06.2015
comment
Я просматриваю проблемы на github, и вы можете посмотреть на их проблему: github.com/bootstrap-wysiwyg/bootstrap3-wysiwyg/issues/131, комментатор упомянул, что это исправлено в исходном файле, а не в файле распространения. вы можете попробовать отключить два файла и посмотреть, поможет ли это   -  person Daemedeor    schedule 24.06.2015


Ответы (2)


Я сам нашел ответ, но все равно спасибо 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);
  }

все ок!

person bigzhu    schedule 24.06.2015
comment
спасибо за это теперь работает. Я прочитал комментарий daemedeor, так как у него есть проблема с распространяемым файлом. и я попытался скопировать ваш код @bigzhu и вставить его в bootstrap3-wysiwyg js, который я использую. Я видел, что там объявлено создание редактора, но я его перезаписываю. тогда теперь это работает Танс - person John Christian De Chavez; 15.04.2016

Для всех, кто сталкивался с этим (и чтобы немного расширить предыдущие ответы), мне было немного неприятно перемещаться по различным ветвям редактора wysihtml5.

Также кажется, что есть много вопросов, которые более или менее связаны с проблемой операторов (типа вопросов «редактор возвращает неопределенное»).

Итак, для начала, этот вопрос, похоже, связан с этой конкретной вилкой:

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 < / strong>) содержит этот конкретный коммит:

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

Как отмечает Дэмедеор: https://github.com/bootstrap-wysiwyg/bootstrap3-wysiwyg/issues/131 - этот коммит не сливается с дистрибутивом, а только с источником.

В любом случае, изменив это:

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

к этому

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

может помочь вам (определенно помогло мне).

person MNorup    schedule 22.05.2017