If used with databinding the input flickers and looses focus
Opened this issue · 0 comments
GoogleCodeExporter commented
By referring to
http://books.zkoss.org/wiki/ZK%20Developer's%20Reference/MVVM/Advanced/Binding%2
0Annotation%20for%20a%20Custom%20Component#Declare_Data_Binding_in_Language_Addo
n_XML I was able to enable ZK databinding for codemirror component. I was
trying to bind a Viewmodel property with codemirror with @bind annotation.
Test case
1. Load some default value
2. change the value of codemirror manually
3. click the "Add Text" button
Expected:
In step #2 the cursor should stay inside the codemirror editor at all times
Actual:
In step #2 after you enter few chars (dur to default delay config) an onChange
event is fired causing the binder to reload the property in codemirror again.
This work fine but at the end codemirror editor looses its focus
Notes:
In general databinding implementation the value from component is saved to
ViewModel whenever there is a onChange event. However for codemirror I see
onChange is fired for
1. everytime the value in codemirror changes i.e. for every keystroke
2. any cursor activity
because of the default config is
//from js/codemirror/Codemirror.js _init function
var defaultConfig = {
path: zk.ajaxURI("/web/js/codemirror/codemirror/js/", {au : true, ignoreSession : true}),
stylesheet: css,
parserfile: syntax["js"],
readOnly: this._readonly,
content: this._value,
onChange: function() { wgt._processChange(); },
onCursorActivity: function() { wgt._processChange(); }
};
Ideally if you follow ZK Textbox component behavior it firs onChange when user
tabs out of the input element i.e. onBlur.
Currently this is not possible with Codemirror component as it doesn't have any
config options to add onBlur handling.
However I saw in CodeMirror 3.x version there is a Codemirror.on() method that
allows you to specify a callback function when ever Codemirror looses focus.
Any idea how to get around this in current Codemirror 2.x based implementation
or any thoughts how easy it is to upgrade to CodeMirror 3.x version?
Original issue reported on code.google.com by ash...@potix.com
on 26 Apr 2013 at 4:06
Attachments: