当initcomponent加载存储extjs 4.1.1时视图不显示存储

Posted

技术标签:

【中文标题】当initcomponent加载存储extjs 4.1.1时视图不显示存储【英文标题】:view not showing store when initcomponent loads store extjs 4.1.1 【发布时间】:2012-10-19 16:47:11 【问题描述】:

使用 ExtJs 4.1.1

我有一些商店需要为特定视图的每个实例创建。所以,我在视图的 initcomponent 方法中创建这些存储。这是我正在做的一些代码重构的一部分。我试图使这个视图组件能够用多个实例进行实例化,同时让一个控制器处理所有实例。抛开我的目标不谈,这就是我正在做的事情:

一个特定的树存储填充了数据(无论如何,数据确实最终会在存储中,并通过 firebug 进行验证)。在视图中定义了一个树视图,它将填充的树存储作为其存储。但是,当视图出现时。数据不在树视图中。我相信这可能与 initComponent 运行之前的所有静态配置加载有关,尽管我不确定。如果我能对这个过程有所了解,那将非常有帮助。我在想我说 this.store1 属于视图配置中的视图,然后在视图 initComponent 中定义 this.store1。这是错误的方法吗???

欢迎提出任何建议。

使用 ExtJs 4.1.1

【问题讨论】:

如果是执行顺序的话。在加载配置之前,我可以在哪里为视图和视图项定义数据元素(存储)? 我想也许可以尝试使用构造函数而不是 initcomponent 但我得到了相同的结果。 一些代码会有所帮助 【参考方案1】:

只需从控制器的商店列表中删除商店的名称,因为这种机制会以某种方式干扰为商店分配 ID。以下是我的经验示例:

Ext.define('Adminpanel.controller.MenuManager', 
    extend: 'Ext.app.Controller',
    stores: ['Menu'] // <-- reason
);

Ext.define('Adminpanel.view.menuManager.Tree', 
   extend: 'Ext.tree.Panel',
   initComponent: function() 
       this.store = Ext.create('Adminpanel.store.Menu'); // <-- problem
       this.callParent(arguments);
   
);

【讨论】:

以上是关于当initcomponent加载存储extjs 4.1.1时视图不显示存储的主要内容,如果未能解决你的问题,请参考以下文章

加载后,Extjs 在组合框存储中添加选项

项目配置中的 EXTJS 内联 initComponent 方法

自动加载面板监听器 ExtJs

在触发单击 Extjs 3.4 时重新加载 ComboBox 存储

ExtJS 4 奇怪的树加载行为

InitComponent的使用