javascript - 如何存储异步回调函数的变量
问题描述
我正在开发一个 chrome 扩展,我正在尝试在插件内的 textarea 中的选项卡上输出选定的文本。
获取所选文本的功能效果很好,但我无法将值设置为插件内的 textarea 元素。
问题:如何正确存储值以便能够通过数据绑定将其传递给文本区域?
HTML:
<div>
<p>Here will appear the selected text :</p>
<textarea name="selectedText" id="selectedText" [(ngModel)]="selectedText"></textarea>
<button (click)="getSelectedText()">Get the selected text</button>
</div>
TS:
export class CaptureComponent {
selectedText = '';
getSelectedText() {
chrome.tabs.executeScript( {
code: 'window.getSelection().toString();'
}, function(selection) {
this.selectedText = selection[0];
});
}
}
工作正常,selection[0]
所以我想我尝试存储数据的方式不正确,但我似乎找不到将其更改为的内容。
解决方案
在您当前的方法中,this
不引用您的组件。
更改您的回调以使用箭头函数来保持范围:
getSelectedText() {
chrome.tabs.executeScript( {
code: 'window.getSelection().toString();'
}, (selection) => {
this.selectedText = selection[0];
});
}
推荐阅读
- c# - DAPPER 参数类型错误,但没有抛出异常
- javascript - Javascript - 地图函数中的哈希数组
- delphi - 如何打印code128C?
- java - 使用 io.fabric8 客户端创建 velero.io/v1-BackupStorageLocation 失败
- laravel - 如何为聊天机器人创建 pdf?
- ms-access - 'Id' 不是此表中的索引
- java - 从超类获取浮动属性到超类
- mysql - 如何从数据库中获取数据,在 MATLAB 中,使用“and”运算符的 where 子句?
- java - 如何将文件内容传递给招摇的@ExampleProperty 注释值?
- google-cloud-platform - 如何将 OAuth 应用程序的测试电子邮件帐户列入白名单/授权