3

バックボーン ビューで 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"
        });         

I synchModelWysiwyg バインド後でも、この表記法を使用してバックボーン ビューからモデルにアクセスしようとしましたが失敗しました。

  this.model.set(name, value);

ビューのbindAllにメソッドを追加してみました:

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

とにかく、tinymce がバックボーンではなく synchModelWysiwyg メソッドを起動しているため、「これ」が好きなようにバインドされていないようです。

synchModelWysiwyg メソッドでビューの「this」を処理する方法に関する提案はありますか?

私のフォールバックは、保存時にすべての wysiwyg 値を収集することですが、一貫性を保つためにこれを回避しようとしています。

4

1 に答える 1