我创建了一个需要匿名方法作为参数的方法。 如下
getannotationContent(): any {
var searchString = 'cash';
var strLength = searchString.length;
var doc = this.getReaderControl().docViewer.getDocument();
let data = doc.searchText('cash', 'CaseSensitive,WholeWord');
doc.loadPageText(3, function (text) {
var start = 0;
var index;
while ((index = text.indexOf(searchString, start)) !== -1) {
doc.getTextPosition(3, index, index + strLength,
this.highlightText);
start = index + strLength;
}
});
}
现在我也声明并初始化这个匿名方法,如下
highlightText(quads): any {
debugger;
const viewerWindow = this.webviewerComponent.getWindow();
var docViewer = this.getReaderControl().docViewer;
var am = docViewer.getAnnotationManager();
let anf = am.getAnnotationsList();
var firstChar = quads[0];
var lastChar = quads[quads.length - 1];
var firstx = (firstChar.x1 + firstChar.x2) / 2;
var finalx = (lastChar.x3 + lastChar.x4) / 2;
var y = (firstChar.y1 + firstChar.y4) / 2;
var topLeft = { x: firstx, y: y, pageIndex: this.pageNum };
var bottomRight = { x: finalx, y: y, pageIndex: this.pageNum };
var annot = new viewerWindow.Annotations.TextHighlightAnnotation();
annot.setPageNumber(this.pageNum);
annot.StrokeColor = new viewerWindow.Annotations.Color(0, 255, 255);
am.addAnnotation(annot);
var textHighlightTool = new viewerWindow.Tools.TextHighlightCreateTool(docViewer);
textHighlightTool.annotation = annot;
textHighlightTool.pageCoordinates[0] = topLeft;
textHighlightTool.select(topLeft, bottomRight);
}
现在,当我们运行应用程序时, this.highlightText() 方法显示为未定义。 那么你能告诉我如何在函数内传递匿名函数作为 angular4 中的参数吗?
谢谢
马诺吉·古普塔
最佳答案
您需要使用像这样的箭头函数 doc.loadPageText(3, (text) => {})
。
this.highlightText
中的 this
引用了错误的范围。
因此,用以下代码替换您的函数定义:-
getannotationContent(): any {
var searchString = 'cash';
var strLength = searchString.length;
var doc = this.getReaderControl().docViewer.getDocument();
let data = doc.searchText('cash', 'CaseSensitive,WholeWord');
doc.loadPageText(3, (text) => {
var start = 0;
var index;
while ((index = text.indexOf(searchString, start)) !== -1) {
doc.getTextPosition(3, index, index + strLength,
this.highlightText);
start = index + strLength;
}
});
}
关于Angular:将方法作为 Angular 中的参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51890053/