注:作者是新的EXT JS和尝试使用MVC在他的项目动态模型,存储和意见 - 以最佳方式
想象我有它的数据模型是不固定的Web服务。我希望动态创建我的模型,从中动态创建存储,并从而动态创建其数据位于这些存储中的组件。
允许通过观察模型的样本类定义开始:
Ext.define('MNESIA.model.User', { extend: 'Ext.data.Model' });
在该模型中的定义,我已经离开了在配置对象的'fields'
参数。这是因为每当我创建一个上述类型的模型的实例时,我想动态地给它的字段定义,换句话说,我可以有这个模型的许多实例,但它们都具有不同的参数'fields'
的定义。
在这里,我创建存储的定义,像这样:
Ext.define('MNESIA.store.Users', { extend: 'Ext.data.Store', autoLoad: true } });
,我有一个店的定义。我忽略了'model'
参数,因为我将它动态地附加到这个类的每个实例。事实上,即使是'data'
和'proxy'
设置也没有提到,因为我想在这个商店的实例化过程中对它们进行赋值。
从那里,我想拥有动态视图,由动态商店驱动。下面在这里我有一个网格
Ext.define('MNESIA.view.Grid' , { extend: 'Ext.grid.Panel', alias : 'widget.mygrid', width: 700, height: 500 });
的定义,我已经离开了在网格规格参数如下:'columns'
,'store'
和'title'
。这是因为我打算将许多网格作为上述规范的实例创建,但仍具有动态存储,标题和列定义。
在我的控制器的一些地方,我有一个看起来像这样的代码:
function() { var SomeBigConfig = connect2Server(); /* where: SomeBigConfig = [ {"model":[ {"fields": ["SurName","FirstName","OtherName"] } ] }, {"store":[ {"data": {"items":[ {"SurName":"Muzaaya","FirstName":"Joshua","OtherName":"Nsubuga"}, {"SurName":"Zziwa","FirstName":"Shamusudeen","OtherName":"Haji"}, ... ] } }, {"proxy": { "type": "memory", "reader": { "type": "json", "root": "items" } } } ] }, {"grid",[ {"title":"Some Dynamic Title From Web Service"}, {"columns": [{ "header": "SurName", "dataIndex": "SurName", "flex": 1 },{ "header": "FirstName", "dataIndex": "FirstName", "flex": 1 }, { "header": "OtherName", "dataIndex": "OtherName", "flex": 1 } ]} ] } ] */ var TheModel = Ext.create('MNESIA.model.User',{ fields: SomeBigConfig[0].model[0].fields }); var TheStore = Ext.create('MNESIA.store.Users',{ storeId: 'users', model: TheModel, data: SomeBigConfig[1].store[0].data, proxy: SomeBigConfig[1].store[1].proxy }); var grid = Ext.create('MNESIA.view.Grid',{ store: TheStore, title: SomeBigConfig[2].grid[0].title, columns: SomeBigConfig[2].grid[1].columns }); // From here i draw the grid anywhere on the, page say by grid.renderTo = Ext.getBody(); // end function }
现在这种型号,然后存储,然后网格动态创建的并导致到内存浪费,所以这将每次我们想要销毁该组件时,都需要调用每个组件的销毁方法。
问题:
QN 1:是否MVC实现EXT JS的4许可证吗?
Qn 2:我如何通过使用我的新类的xtypes
获得相同的功能。例如说:
{ xtype: 'mygrid', store: TheStore, title: SomeBigConfig[2].grid[0].title, columns: SomeBigConfig[2].grid[1].columns }
QN 3:如果我写了上面真正起作用的,是务实正确的,我可以将此像面板,TabPanels,树(因此他们CONFIGS发送所有组件由远程服务器)?
Qn 4:如果我有控制器A和B,控制器A的视图规范为[C,D],控制器B的视图为[E,F],如果产生的动作是正确的通过查看:E由控制器A处理?即控制器能否处理未在其视图配置中注册的视图的操作?
注:对于Ext JS来说,这是相当新的事物,但很想了解更多。请教我如何改进我的EXT JS学习曲线。谢谢
所以我的模型出了问题?我只有一个简单的模型规范来说明我的新动态MVC设计模式 –