在 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”事件

将数据从控制器传递到另一个视图并在 sencha touch 中设置标签的值

如何在 Sencha Touch 中为文本字段添加属性?

如何在Sencha Touch的Text字段中添加属性?

如何在 Sencha Touch 2.0 中清除 cookie