我创建了一个需要匿名方法作为参数的方法。 如下
BasicDatasource
现在我也按如下方式声明和初始化此匿名方法
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;
}
});
}
现在,当我们运行应用程序时,this.highlightText()方法显示为未定义。 所以请您告诉我如何在函数内部将匿名函数作为angular4中的参数传递。
谢谢
Manoj Gupta
答案 0 :(得分:2)
您需要使用类似doc.loadPageText(3, (text) => {})
的箭头功能。
您在this
中的this.highlightText
引用了错误的范围。
因此用以下代码替换您的函数定义:-
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;
}
});
}