javascript - ExtJS 4.2 动态生成多个相似数据源的Model+Store+View

标签 javascript extjs metaprogramming extjs4.2 template-meta-programming

我收集了类似的对象,应该以相同的方式处理它们。

对象示例:

Foo (id, title, size)
Bar (id, name, count, ...)
...

通常情况下,我应该为每个文件创建 3 个文件并在 MyApp.Application 存储和 View 中注册。我想避免创建多个类似的文件。但我找不到可以生成它的点。另外,我想通过通常的方式使用这个生成的商店/模型(例如在组合框中通过“store:'Foos'”等引用)。

MyApp.model.Foo (app/model/foo.js)

Ext.define('MyApp.model.Foo', {
  extend: 'Ext.data.Model',
  fields: [ 'title', 'size' ],
  proxy: { ... }
});

MyApp.store.Foos (app/store/foos.js)

Ext.define('MyApp.store.Foos', {
  extend: 'Ext.data.Store',
  autoLoad: true, autoSync: true,
  model: 'MyApp.model.Foo',
});

MyApp.view.Foos (app/view/foos.js)

Ext.define('MyApp.view.Foos', {
  // customized grid which pulls fields list from attached model
  extend: 'MyApp.control.GenericGrid',      
  alias: 'widget.foogrid',
  store: 'SendMethods',

  i18nNamespace: 'generic.foos', // prefix for i18n key for fields titles
});

我试图从 MyApp.Application 中获取一些源文件,并将模型和存储定义放入该文件中。它适用于构建版本。但在开发过程中却失败了。现在它只是在加载时卡住。

MyApp.Application (app/Application.js)

Ext.define('MyApp.Application', {
  name: 'MyApp',
  extend: 'Ext.app.Application',

  requires: [ 'MyApp.factory.GenericModel' ],
  stores: [
    'Foos'
  ]
  ...
});

MyApp.factory.GenericModel (app/factory/GenericModel.js)

Ext.define('MyApp.factory.GenericModel', {});

Ext.define('MyApp.model.Foo', {
  ...
});

Ext.define('MyApp.store.Foos', {
  ...
});

定义多个 Ext 类而不为每个类创建文件的正确方法是什么?

最佳答案

你可以这样实现:

第 1 步:创建一个包含所有必需的类定义的文件,如下所示:

Ext.define('MyApp.Classes',{

}, function(){
    Ext.define('MyApp.Class1',{});
    Ext.define('MyApp.Class2',{});
    Ext.define('MyApp.Class3',{});
    Ext.define('MyApp.Class4',{});
    Ext.define('MyApp.Class5',{});
});

在此示例中,Classes 不执行任何操作(它只是一个名称),Class[1-5] 是您实际想要在一个文件中定义的类。

第 2 步:在应用程序或 Controller 中需要 MyApp.Classes

关于javascript - ExtJS 4.2 动态生成多个相似数据源的Model+Store+View,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24329393/

相关文章:

python - 如何在python中为类动态创建类方法

Javascript addEventListener 回调逻辑

javascript - 如何将不同大小的圆圈对齐到中间?

javascript - Jade for 循环与 #{self.variable} 不固定列表

extjs - 如何在没有互联网连接时提醒用户

extjs - 如何让Extjs按钮看起来像一个链接?

javascript - React + JS 文件,使用 Atom + Chrome 控制台未捕获错误 : Minified exception,

javascript - 在运行时添加 ExtJS 组件 - "refresh view"?

sql - 在DolphinDB中,如何使用ols函数基于表计算股票剩余 yield ?

c++ - 清理 switch 语句