2016-10-09 4 views
0

私はHTMLエディタとしてtinyMceを持つangular2アプリを持っています。唯一の問題は、私は自分のREST APIを通してhtmlのURLを変換する必要があるということです。私はTinyMCEのから「urlconverter_callback」を使用しようとしましたが、私はこれへの参照を失うと動けなくなることを行うには:は、これを盗んだコールバックではなくなっています

ngAfterViewInit(): void { 
    console.log('tinymce'); 
    tinymce.init({ 
     selector: `[data-tinymce-uniqueid=${this.uniqueId}]`, 
    theme: "modern", 
    skin: 'light', 
    height: 768, 
    toolbar: 'undo redo | styleselect | bold italic | link image | code', 
    plugins: 'code', 
     schema: 'html5', 
    urlconverter_callback: this.urlConverter, 
     setup: ed => { 
      ed.on('init', ed2 => { 
       if (this.innerValue) ed2.target.setContent(this.innerValue.text); 
       this.init = true; 
      }); 
     } 
    }); 

    // I chose to send an update on blur, you may choose otherwise 
    tinymce.activeEditor.on('blur',() => this.updateValue()); 
} 

urlConverter(url, node, on_save): string { 
    console.log("TinyDirective.urlConverter(%o, %o, %o)", url, node, on_save); 
    console.log("TinyDirective.urlConverter: this = %o", this); 
    console.log("TinyDirective.urlConverter: this.innerValue = %o", this.innerValue); 
    return this.innerValue.url_converter(url); 
} 

コンソールから私は、これはもはや私のディレクティブを指していること、見ることはできません。その結果、私はinnerValueプロパティにアクセスすることができません。

私のディレクティブの正しい参照を持つコールバックを作成するにはどうすればよいですか? tinymce.init

urlconverter_callback: this.urlConverter.bind(this) 

またはコンストラクタ内内bindを使用)

1:

答えて

1

あなたはこれらのオプションのいずれかを試すことができます

constuctor() { 
    this.urlConverter = this.urlConverter.bind(this); 
} 

2)urlConverter法上の矢印の機能を使用し

urlConverter = (url, node, on_save): string => { 
    ... 
} 

またはtinymce.init

urlconverter_callback: (url, node, on_save) => this.urlConverter(url, node, on_save) 
+0

これは本当に速かったです!どうもありがとう!私はtinymce.initの中でbindを使ってしまった。 –

+0

あなたは大歓迎です! – yurzui

関連する問題