在我的MVC应用程序中,我有一个像这样定义的控制器:
Ext.define('NE.controller.MyController', {
extend: 'Ext.app.Controller',
stores : [...'StoreAgents'..],
views: [ ...'MyView'...], // * alias w_view
init: function() {
this.control({
'w_view': {
render: function() { this.getStore('StoreAgents').load(); }
}
});
}
});
在视图MyView中我有一个这样定义的组合框:
{
xtype: 'combobox',
name : 'id_agent',
forceSelection: true,
fieldLabel: 'Agent',
store: 'StoreAgents',
queryMode: 'local',
displayField: 'name',
valueField: 'id'
}
我希望每次渲染视图时都会更新组合框列表,我错了吗? 目前,即使我看到(通过firebug)应用程序触发正确返回所有代理数据的请求,组合框仍然没有选项。
此外,我注意到每当我浏览另一个视图时,由另一个控制器管理,另一个控制器又声明另一个StoreAgent并调用其load()方法..好吧,如果我回来,现在我看到组合框已填充。 / p>
我缺少什么? 谢谢
修改
我注意到商店是{buffered: true}
。如果我将其切换为false,则商店会触发'datachange'事件;否则它没有。所以现在的问题是:为什么如果启用缓冲,load()不会触发'datachange'?
答案 0 :(得分:0)
这可能是由于过滤掉的情况造成的。如果在存储加载之前组合框中填充了一个值,则会在存储上放置一个过滤器,在存在之前过滤掉所有值,然后在添加新记录时,它们也不会显示。试试这个。
init: function() {
this.control({
'w_view': {
render: function() { this.getStore('StoreAgents').load();
this.getStore('StoreAgents').clearFilter();}
}
});
}