Sencha Touch Ext.app.Application

Ext.app.Application一般用于app.js中

用来初始化整个应用

可以预先加载controllers(控制器),models(模型),stores(数据源),views(视图)

例如:

Ext.application({
    name: 'MyApp',

    controllers: ['Users'],
    models: ['User', 'Group'],
    stores: ['Users'],
    views: ['Main', 'ShowUser']
});

他们分别对应下面几个js文件

  •   app/model/User.js
  •   app/model/Group.js
  •   app/store/Users.js
  •   app/controller/Users.js
  •   app/view/Main.js
  •   app/view/ShowUser.js

如果应用结构比较复杂,例如在视图文件夹之中还创建了子文件夹,可以如下

Ext.application({
     name: 'MyApp',
 
     controllers: ['Users', 'nested.MyController'],
     views: ['products.Show', 'products.Edit', 'user.Login']
 });

他们分别对应下面几个js文件

  •   app/controller/Users.js
  •   app/controller/nested/MyController.js
  •   app/view/products/Show.js
  •   app/view/products/Edit.js
  •   app/view/user/Login.js

以上两种方式结合如下

Ext.application({
     views: ['Auth.view.LoginForm', 'Welcome'],
     controllers: ['Auth.controller.Sessions', 'Main'],
     models: ['Auth.model.User']
 });

他们分别对应下面几个js文件

  •   Auth/view/LoginForm.js
  •   Auth/controller/Sessions.js
  •   Auth/model/User.js
  •   app/view/Welcome.js
  •   app/controller/Main.js

为了方便管理,我一般只在这里引入控制层,其他的放在对应的控制层,app.js如下

//指定ux起调目录
Ext.Loader.setPath({
    'ux': 'app/ux'
});

Ext.application({
    name: 'app',
    controllers: ['Main', 'Job', 'User', 'New', 'Img', 'Question', 'Release'],
    requires: ['app.config', 'app.util'],
    //图标  
    icon: {
        '57': 'resources/icons/icon.png',
        '72': 'resources/icons/icon.png',
        '114': 'resources/icons/icon.png',
        '144': 'resources/icons/icon.png'  
    },  
    //运行图标优先显示  
    isIconPrecomposed: true,  
    //不同分辨率对应的启动图片  
    startupImage: {
        '320x460': 'resources/startup/splash.png',
        '640x920': 'resources/startup/splash.png',
        '768x1004': 'resources/startup/splash.png',
        '748x1024': 'resources/startup/splash.png',
        '1536x2008': 'resources/startup/splash.png',
        '1496x2048': 'resources/startup/splash.png'
    },  
    //当所有的引入项加载完成后,执行
    launch: function() {
        // Destroy the #appLoadingIndicator element
        util.inIt();
        Ext.fly('appLoadingIndicator').destroy();
    }
});

其中值得注意的属性有

  appFolder 默认值:app 应用目录名称

  所以我们的主要代码是放在app目录中的,当然也可以改成其他的值,比如test

  不过更改之后最好如下设置,以免应用出现问题,个人建议默认即可

Ext.Loader.setPath({
     'app': 'test'
 });

name 默认值:app 应用程序名称

  如果你改成其他的名称,比如test

  那你注册一个model他的名称应该是类似test.model.user

  个人建议使用默认值

  

  icon 应用启动图标

  如果使用cmd打包应用,需要配置

  requires 引入指定js

  比如全局配置文件,全局共用方法,消息提示组件等

关于Ext.app.Application有其他看法和疑问的欢迎留言探讨

作者: 魔狼再世
原文: http://www.cnblogs.com/mlzs/p/3473407.html