2017-10-02 13 views
0

코드 미러가 extjs 6에 바인드되지 않았습니다. 이미 get 및 set 메소드를 서브 스크립 션하려고했으나 구성 요소가 열리면 값이 설정되지만 값이 변경 될 때만 작동합니다 codemirror, 그것은 값과 결합하지 않는Bind codemirror extjs 6

내 구성 요소 :

Ext.define('Ext.form.field.CodeMirror', { 
extend: 'Ext.form.field.TextArea', 

alias: 'widget.codemirror', 

getValue: function() { 

    var me = this; 

    if (me.codeEditor) { 
     return me.codeEditor.getValue(); 
    } 
}, 

setValue: function (value) { 

    this.codeEditor.setValue(value); 
}, 

listeners: { 
    afterrender: function (textarea) { 

     var me = this; 

     me.codeEditor = CodeMirror.fromTextArea(textarea.inputEl.dom, { 
      mode: "xml", 
      htmlMode: true, 
      theme: "default", 
      lineNumbers: true, 
      lineWrapping: true, 
      matchTags: { 
       bothTags: true 
      }, 
      autoCloseTags: true, 
      extraKeys: { 
       "F11": function (cm) { 
        cm.setOption("fullScreen", !cm.getOption("fullScreen")); 
       }, 
       "Esc": function (cm) { 
        if (cm.getOption("fullScreen")) { 
         cm.setOption("fullScreen", false); 
        } 
       } 
      }, 
      foldGutter: { 
       rangeFinder: new CodeMirror.fold.combine(CodeMirror.fold.indent) 
      }, 
      gutters: ["CodeMirror-linenumbers", "CodeMirror-foldgutter"] 
     }); 
    } 
} 

});

xtype: 'codemirror', 
name: 'xml', 
bind: '{model.arquivoNfceWrapper.xml}', 

답변

0
listeners: { 
    afterrender: function (textarea) { 

     var me = this; 

     me.codeEditor = CodeMirror.fromTextArea(textarea.inputEl.dom, { 
      mode: "xml", 
      htmlMode: true, 
      theme: "default", 
      lineNumbers: true, 
      lineWrapping: true, 
      matchTags: { 
       bothTags: true 
      }, 
      autoCloseTags: true, 
      extraKeys: { 
       "F11": function (cm) { 
        cm.setOption("fullScreen", !cm.getOption("fullScreen")); 
       }, 
       "Esc": function (cm) { 
        if (cm.getOption("fullScreen")) { 
         cm.setOption("fullScreen", false); 
        } 
       } 
      }, 
      foldGutter: { 
       rangeFinder: new CodeMirror.fold.combine(CodeMirror.fold.indent) 
      }, 
      gutters: ["CodeMirror-linenumbers", "CodeMirror-foldgutter"] 
     }); 

     me.codeEditor.on('change', function (cMirror) { 

      me.updateBindValue(cMirror.getValue()); 
     }); 

     me.codeEditor.setValue(me.getBindValue()); 
    } 
}, 

getBindValue: function() { 

    return this.bind.value.getValue(); 
}, 

updateBindValue: function (value) { 
    this.bind.value.setValue(value) 
} 
:

구성 요소를 사용하여 (기본 바인드는 ExtJS의 값입니다)