我的问题是我有一个WEB应用程序,我正在使用typescript与angularjs 4
我需要创建一个keyEvent或者其他东西,每当我在任何地方输入小注释('//')时,我需要将它们替换为大注释('/ * XXX * /')和光标应放在它们之间(标有字符XXX)
我到目前为止,为了能够从编辑器中读取行,并编辑注释,但更换行有一个问题,我不知道为什么,因为没有错误在控制台上。
以下是代码:
@HostListener( 'window:keydown', ['$event'] ) keyboardInput( e: any ) {
if ( e.key === '/' && this.globalService.mode === 'EDIT' ) {
this.backslashCounter++;
const column = this.globalService.editor.getEditor().session.selection.selectionAnchor.column;
const row = this.globalService.editor.getEditor().session.selection.selectionAnchor.row;
this.currentLine = '' + this.globalService.editor.getEditor().session.selection.doc.getLines( row, row );
if ( this.backslashCounter === 2 ) {
if ( this.currentLine.substr( column - 1, 1 ) === '/' ) {
// e.preventDefault();
// e.stopPropagation();
this.backslashCounter = 0;
currentLine = this.removeSmallCommentsWithBigOnes(currentLine);
const editor = this.globalService.editor.getEditor();
const range = this.globalService.editor.getEditor().session.selection.getRange();
range.start.column = 0;
range.end.column = currentLine.length + 5;
editor.replace( range, currentLine ); // THIS LINE HERE DOES NOT WORK!!!!!!!!!!!!!!!!
this.globalService.editor.getEditor().session.selection.moveTo( row, column + 2 ); // this line sets the selection back to the right position in the middle of the big comments (or it should, did not have a chance to see :))
} else {
this.backslashCounter--;
}
}
}
}
因此,代码执行以下操作: 首先,检查按下的键是否为“/”键
第二个IF,检查是否有2个,
第三个IF,检查它们是否彼此相邻,如果不是,则计数器减少1
现在我标记了在JAVASCRIPT中有效的行但它在TYPESCRIPT中不起作用,请帮助。
也许还有一种更好的方法来获取当前行和行,因为,这只适用于我使用鼠标并直接单击我要写注释的位置,但是如果我移动光标则不行箭头按钮。
谢谢。
答案 0 :(得分:1)
而不是var startingPoint = 200;
var maxValue = 600;
var pxlCount = 0;
$(window).on('scroll', function () {
if($(window).scrollTop() >= startingPoint && $(window).scrollTop() <= maxValue){
pxlCount = $(document).scrollTop()/50;
$('.pop').css('margin-right', -400 + parseInt(pxlCount * 20) + 'px');
}
});
您需要使用editor.replace
,editor.session.replace
会做其他事情。