这是有点难以解释,所以我正在尽我最大的努力,如果我的问题是模糊的,请要求更清楚。
我正在用商店里的选项填充一个选择字段。此表单显示在用户单击“我的一般列表”中的行时获取的详细视图上。一切都完美无缺。
我在push()中使用record.data将相关数据传递给细节视图,并使用初始化侦听器捕获该数据,并在细节视图(标题、表单等)上填充一些项。
我的selectfield有一个更改监听器,用于在字段更改后执行ajax请求。所发生的情况是,我的selectfield首先从存储加载选项,然后调用初始化监听器。
每次加载视图时都会产生ajax请求。因为我的初始化监听器更改了selectfield以显示另一个选项为active,因此selectfield认为某些内容已经更改,并触发了更改侦听器。
在不触发更改侦听器的情况下,将selectfield选项设置为active的最佳方法是什么?
带有更改侦听器的选择字段:
xtype: 'selectfield',
itemId:'groundtype',
displayField: 'ground_name',
valueField: 'ground_id',
store: 'groundTypeStore',
listeners: {
change: function (data) {
// execute ajax request on change
}
}窗体面板(详细视图)初始化侦听器
listeners:
{
initialize: function(){
var value = this.config.record;
if(value != null){
this.down('#groundtype').setValue(value.groundtype);
}
}
}提前感谢!
发布于 2014-02-19 16:29:46
可以使用suspendEvents函数在设置值的同时挂起字段的事件:
var field = this.down('#groundtype');
field.suspendEvents();
field.setValue(value.groundtype);
field.resumeEvents(true);注意,您需要将true传递给resumeEvents,以便丢弃排队事件。
https://stackoverflow.com/questions/21882647
复制相似问题