我希望在(!)加载之前更改商店的代理。这种情况下的具体问题是我找不到合适的时机,何时加载。
详细说明:
我通过创建EXTJS4架构定义的视图,控制器,模型和商店来创建MVC模型。视图是一个网格面板。它在自己的define语句中定义商店:
Ext.define('P.view.MyView' ,{
extend: 'Ext.grid.Panel',
alias : 'widget.MyView',
...
store: 'MyStore',
...
}
当我使用“autoload:true”加载商店时,一切正常,但当然代理是静态的,如代码中所定义的。当我不使用“autoload”并尝试设置“extraParams”并将商店加载到我的视图的“initComponent”中时:
initComponent: function() {
...
this.store.load();
....
我收到错误:对象“MyStore”没有方法'load'。
我该怎么做?
答案 0 :(得分:4)
我想补充一点,在最后一刻加载数据的另一种常见方法是使用网格上的afterrender监听器,如下所示:
listeners: {
afterrender: function(grid) {
grid.store.getProxy().url = 'request/my.json'; //modify your URL
grid.store.load();
}
}
如您所见,您还可以影响商店和代理设置。这有助于重用类似网格的商店。
答案 1 :(得分:3)
当您在initComponent中调用this.store.load()
时,商店尚未初始化。属性this.store
在调用时是字符串。您必须在调用窗口小部件的父initComponent
(发生存储初始化)之后调用加载:
initComponent: function() {
...
this.callParent(arguments);
this.store.load();
....