失去了“this"从timece回调
lost "this" in callback from tinymce
我有一个使用tinyMce作为HTML编辑器的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属性。
我如何创建一个回调,将有一个正确的引用我的指令?
您可以尝试以下选项之一:
1)在tinymce.init
中使用bind
urlconverter_callback: this.urlConverter.bind(this)
或构造函数内:
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)
相关文章:
- AngularJS:我可以跳过函数参数回调吗
- 要求未定义JS回调参数
- MeteorJS:在带有回调的vzaar api上正确使用wrapAsync
- 自引用回调
- 测试Angular Service解决错误回调中的promise
- 如何将一个JavaScript函数回调为多个函数
- JavaScript回调函数
- 用于回调的javascript参数
- 将json回调数据转换为日期
- 承诺在非节点式回调上使用Bluebird
- 如何在回调函数中执行流
- 回调函数中传递参数的困难(Google Map API Markers)
- Soundcloud Javascript SDK 3.0-回调无法读取属性'connectCallback
- 如何使用jqueryAJAX从页面中回调多个变量
- jquery Onclick函数带有导致双击的回调排序函数
- Javascript点击事件回调不起作用
- 一旦加载并渲染了角度引导typeahead,就使用回调
- 成功回调永远不会被JSONP请求调用
- 如何让程序员在javascript中实现正确的回调
- 失去了“this"从timece回调