在 Sencha Touch 中设置 numberfield 的值而不触发“change”事件
Posted
技术标签:
【中文标题】在 Sencha Touch 中设置 numberfield 的值而不触发“change”事件【英文标题】:Set value of numberfield without firing "change" event in Sencha Touch 【发布时间】:2013-06-04 15:58:22 【问题描述】:我在 Sencha Touch 中有一个数字字段和一个列表。当我单击列表中的某个项目时,我正在执行 AJAX 请求以将数据发送到服务器。但是,如果数字字段中有数据,我想在单击列表时清除它。
我这样做没有问题(我将值设置为空白字符串),但是,在数字字段上触发了更改事件。这会导致另一个不需要的 AJAX 请求运行。有没有办法在不触发更改事件的情况下清除数字字段? SuspendEvents 不起作用,因为清除数字字段需要一个事件。
有什么想法或建议吗?谢谢!
我尝试过的代码行:
suspendEvents();
me.getWhatScreen().down('numberfield[name=caseNumber]').setValue('');
resumeEvents(true);
me.suspendEvents();
me.getWhatScreen().down('numberfield[name=caseNumber]').setValue('');
me.resumeEvents(true);
【问题讨论】:
【参考方案1】:执行suspendEvents()
,更新您的号码字段,然后执行resumeEvents()
更新
var control = me.getWhatScreen().down(...);
control.suspendEvents();
control.setValue('');
control.resumeEvents(false);
【讨论】:
感谢您的回复。我试过你的建议。当我调用me.suspendEvents()
,更新numberfield 代码,然后调用me.resumeEvents(true or false)
时,numberfield 被清除,但两个AJAX 请求都运行。如果我只是做suspendEvents()
,更新numberfield 代码,然后resumeEvents(true or false)
设置numberfield 值的代码不起作用。仅发出一个 AJAX 请求,但未清除 number 字段。还有其他想法吗?
我认为您需要在控制级别而不是全局级别上暂停/恢复事件。
我目前正在控制器的一个函数中运行此代码。你的意思是使用this.suspend/resumeEvents
?我在控制器中的函数顶部完成了代码var me = this
。有什么说明吗?
遇到同样的问题,我的模型需要“填充”7 个输入,并且更改会触发它们“onChange”。为什么没有“点击或选择”煎茶...?
control.resumeEvents(false)
处的 false
参数无效,因为 resumeEvents 没有参数。张贴者打算不对事件进行排队,但这将在调用suspendEvents 时决定,其中参数queueSuspended 的默认值为false。都在这里:docs.sencha.com/extjs/4.2.1/#!/api/…【参考方案2】:
Sencha Touch 2.4 更新
正确的顺序是
var control = me.getWhatScreen().down(...);
control.suspendEvents();
control.setValue('');
control.resumeEvents(true);
resumeEvents 采用布尔参数discardQueuedEvents
【讨论】:
以上是关于在 Sencha Touch 中设置 numberfield 的值而不触发“change”事件的主要内容,如果未能解决你的问题,请参考以下文章
如何使用商店在 sencha touch 中设置动态 url?
在 Sencha Touch 中设置 numberfield 的值而不触发“change”事件