【发布时间】:2016-07-07 21:59:24
【问题描述】:
我正在尝试将 codemirror 与 Angular 2 (TypeScript) 链接。 现在,我可以使用 codearea 自定义指令显示 CodeEditor,它会动态加载脚本文件并格式化文本区域。
我无法获取值,用户在文本区域输入,我尝试过 NgModel、value 等,我认为 codemirror 正在删除文本区域并重新插入,这可能会导致错误。
我尝试使用 onchange 和 keyup 事件处理程序,但是当在文本区域中输入任何内容时,它们会被重复调用。所以这没有用。
这是代码区域组件的代码:
import {Component, AfterViewChecked,AfterViewInit} from 'angular2/core';
@Component({
selector: 'code-area',
template: `
<input [(ngModel)]="ic_code">
<textarea [(ngModel)]="ic_code" id='problem2' name='problem2' rows='10' cols='80'>
</textarea>
<div>
<textarea [(ngModel)]="ic_code" id='problem1' name='problem2' rows='10' cols='80'>
int main(){
}
</textarea>
</div>
<button (click)="submit_clicked()">Submit</button>
<input [(ngModel)]="ic_code">
`
})
export class CodeArea implements AfterViewInit,AfterViewChecked{
public ic_code;
public ic_code2;
public ic_codediv;
constructor(){
this.ic_code = "";
System.import('app/applycodemirror')
.then(refToLoadedScript => {
applycodestyle();
});
}
ngAfterViewInit(){
console.log("AFter view init called in CodeArea");
}
ngAfterViewChecked(){
}
onChange(){
//This is being repeatedly called
}
submit_clicked() {
//I need the code here ,when user clicks on submit
}
onKey(event: any) {
console.log(event.target.value+' ');
}
}
这里是外部js文件
function applycodestyle(){
if(document.getElementById("problem1") != null){
console.log("Problem 1 present");
var cEditor = CodeMirror.fromTextArea(document.getElementById("problem1"), {
lineNumbers: true,
matchBrackets: true,
mode: "text/x-csrc",
});
}else{
console.log("Problem 1 null");
}
}
【问题讨论】:
标签: javascript angularjs typescript angular codemirror