Доступ к базовой модели из onchange_callback в редакторе tinymce

Я использую редактор tinymce с магистральным представлением. Для других полей формы я привязываю событие изменения к функции, которая поддерживает синхронизацию модели с изменениями в форме:

events: {
        "change input":  "synchModel",
        "change textarea":  "synchModel",
        "change select":  "synchModel"                                              
    }

проблема заключается в том, что редактор tinymce эффективно заменяет основную текстовую область, к которой он привязан, поэтому никакие события изменения не запускаются при обновлении содержимого редактора. Чтобы попытаться решить эту проблему аналогично приведенному выше, у меня есть другая функция, связанная с событием изменения tinymce:

$(el).find('.wysiwyg').tinymce({
            // Location of TinyMCE script
            script_url : 'tiny_mce.js',
            theme : "simple",
            onchange_callback : "synchModelWysiwyg"
        });         

Я synchModelWysiwyg. Я безуспешно пытаюсь получить доступ к модели из представления магистрали, используя эту нотацию даже после привязки:

  this.model.set(name, value);

Я даже пытался добавить метод в bindAll в представлении:

_.bindAll(this, 'render', 'synchModelWysiwyg')

Во всяком случае, кажется, что, поскольку tinymce запускает метод synchModelWysiwyg, а не основу, «это» не связывается, как мне бы хотелось.

Любые предложения относительно того, как получить дескриптор «этого» для представления в методе synchModelWysiwyg?

Мой запасной вариант - собрать все значения wysiwyg при сохранении, но я пытаюсь избежать этого, чтобы сохранить его согласованность.


person Conor Power    schedule 20.08.2012    source источник


Ответы (1)


Я предполагаю, что ваш пример кода находится в методе представления render. Если это так, то я бы рекомендовал установить переменную в контексте представления и использовать эту переменную в функции onchange_callback.

Вот пример кода:

// set the view's context to the self variable
var self = this;
$(el).find('.wysiwyg').tinymce({
  // Location of TinyMCE script
  script_url : 'tiny_mce.js',
  theme : "simple",
  onchange_callback : function(args) {
    // self references the view
    self.synchModelWysiwyg(args)
  }
});
person Paul    schedule 20.08.2012
comment
спасибо Пол. да, в итоге сделал что-то подобное через несколько часов, пройдя запутанный путь использования вызова и применения ... - person Conor Power; 20.08.2012