这有点难以解释所以我正在尽力而为,如果我的问题含糊不清,请求更清晰。
我正在用商店中的选项填充选择字段。此表单显示在用户点击我的常规列表视图中的行时获取的详细视图。这一切都完美无瑕。
我在push()中使用record.data将相关数据传递给detailview,并使用初始化侦听器捕获此数据并在detailview上填充一些项目(标题,表单等)。
我的selectfield有一个更改侦听器,一旦字段更改,就会执行ajax请求。会发生什么是我的selectfield首先从商店加载选项,然后调用初始化侦听器。
每次加载视图时都会产生一个ajax请求。因为我的初始化侦听器更改了选择域以将另一个选项显示为活动,所以selectfield认为某些内容已更改并触发更改侦听器。
在不触发更改侦听器的情况下,将selectfield选项设置为活动状态的最佳方法是什么?
带有更改侦听器的Selectfield:
xtype: 'selectfield',
itemId:'groundtype',
displayField: 'ground_name',
valueField: 'ground_id',
store: 'groundTypeStore',
listeners: {
change: function (data) {
// execute ajax request on change
}
}
表单面板(detailview)初始化侦听器
listeners:
{
initialize: function(){
var value = this.config.record;
if(value != null){
this.down('#groundtype').setValue(value.groundtype);
}
}
}
提前致谢!
答案 0 :(得分:1)
您可以使用suspendEvents功能设置值时暂停字段的事件:
var field = this.down('#groundtype');
field.suspendEvents();
field.setValue(value.groundtype);
field.resumeEvents(true);
注意,您需要将true
传递给resumeEvents
才能放弃排队的事件。