当用户尝试更改FilteringSelect中的值时,我需要能够取消onChange,具体取决于是否有其他操作使信息变脏。
我曾尝试使用FilteringSelect的undo()方法,但它不起作用。我已经为onChange事件尝试了aspect.before,但由于控件已经获得了新值,因此这似乎太迟了。我试图挂钩调用onChange的方法,但一直无法找到该方法。
我如何才能最好地完成这项工作?
答案 0 :(得分:2)
将值设置为此窗口小部件后," _lastDisplayedValue"的值也更新。因此,撤销不适合这种情况。
如果需要根据某些条件分离此窗口小部件上的onChange事件处理程序," _onChangeActive"私人国旗可以使用。这不应该被程序员明确地使用,而是用于小部件的内部目的。但是,对于这种情况,这可能会造成黑客攻击。
设置_onChangeActive = false,处理程序将被分离。但是不要忘记再次将其重置为true,否则onChange函数不起作用,如果将其设置为false。
e.g:
var widget = dijit.byId('widgetId');
widget.set('_onChangeActive',false);
widget.set('value',newValue); //onChange handler function does not run
//not just programmatic,
//even if user tries to select, when onChangeActive=false this works
widget.set('_onChangeActive',true);
//now the onChange is resumed back