Я пытаюсь инициализировать codemirror внутри текстовой области w2ui.Текстовая область принадлежит форме, сгенерированной во всплывающем окне.Это код для формы:
var formConfig = {
name: 'form_dataEdit',
style: 'border: 0px; padding 5px',
fields: [
{ name:'contents', type:'textarea', required: true, html:{attr:'style="width:'+width*0.7+'px;height:'+height*0.7+'px"'} },
],
url: 'w2uiRecord_dataContents',
recid: name,
postData: {
fileName : name
},
actions: {
"Save": function () {
w2ui.grid.lock('', true);
$.ajax({
url: "data_edit",
type: "POST",
datatype:"json",
data: ({
"fileName":node.key,
"record" : JSON.stringify(this.record)
}),
success: function(response) {
w2ui.grid.unlock();
tab_objects.generate()
}
});
$().w2popup('close');
this.clear();
}
}
}
Я проверил этот код и работает хорошо.Тем не менее, когда я пытаюсь прикрепить codemirror, добавив следующее событие, оно не работает:
onRender: function (event) {
event.onComplete = function () {
console.log(this.fields[0].el) // undefined
console.log(w2ui.form_dataEdit.fields[0].el) // undefined
var codeMirror = CodeMirror.fromTextArea(
this.fields[0].el,
{
'mode':{'name':'javascript'},
'theme':'midnight'
});
codeMirror.setSize(width*0.7, height*0.7);
}
}
Я инициализирую зеркало кода с помощью события onRender с onComplete, чтобы оно вызывалось после создания формы,однако w2ui.form_dataEdit.fields [0] .el (или this.fields [0] .el) не определено.Если я выполню этот код вручную на консоли после создания формы, она будет работать правильно.
Что мне не хватает?Как я могу убедиться, что форма доступна, прежде чем вызывать в ней codemirror?