`
wang_yanli
  • 浏览: 10798 次
  • 性别: Icon_minigender_2
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

extjs4-MVC学习

mvc 
阅读更多

参照官方文档
1、mvc定义
     Model是一个域和值的集合(例如,一个用户Model有用户名和密码域),Model知道通过数据包怎样获取数据,同时也能够与其他models关联。Model非常类似于版本3中的record类,通常和Stores一起将数据展现在grids和别的components中。
     View是任意组件-grids、trees、panels等。
     Controllers是放置应用程序代码的地方,这些代码或者渲染视图、或者实例化Models或者处理其他的业务逻辑。
2、下面创建一个简单的MVC的例子
      目录结构如下:

      

注:在这个目录结构中ext-4下为整个ext4SDK工具包内容,否则会报关联文件找不到的错误。

   按照如上的目录结构建好文件夹,开始写文件:

   1)首先写入口文件index.html

<html>
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>Account Manager</title>

    <link rel="stylesheet" type="text/css" href="ext-4/resources/css/ext-all.css">

    <script type="text/javascript" src="ext-4/ext-debug.js"></script>
	
    <script type="text/javascript" src="app.js"></script>
</head>
<body></body>
</html>

   2)创建Application文件app.js

        每个Ext JS4应用程序开始于一个实例化的Application类。 它包含全局的设置(例如,app's name),维护所有需用到的models、views和controllers关联关系。还包含一个加载完成资源后自动运行的launch功能。

Ext.application({
    requires: ['Ext.container.Viewport'],
    name: 'AM',

    appFolder: 'app',

    launch: function() {
        Ext.create('Ext.container.Viewport', {
            layout: 'fit',
            items: [
                {
                    xtype: 'panel',
                    title: 'Users',
                    html : 'List of users will go here'
                }
            ]
        });
    }
});

   在以上代码中,首先调用Ext.application创建一个Application实例类,命名为AM,这样就自动设置了一个全局变量AM,且将命名空间注册到Ext.Loader,同样通过appFolder设置了app通讯路径。我们还提供给了一个简单的launch功能,用来创建一个仅仅包含一个满屏Panel的Viewport。

   3)定义一个Controller

   Controllers是application之间的粘合剂。它们实际上是监听事件并做出相应的响应动作。

   一下为我们创建的一个controller,路径为app/controller/Users.js

Ext.define('AM.controller.Users', {
    extend: 'Ext.app.Controller',

    init: function() {
        console.log('Initialized Users! This happens before the Application launch function is called');
    }
});

   现在,我们把新建的controller添加到app.js中

 

Ext.application({
    ...

    controllers: [
        'Users'
    ],

    ...
});

   当在浏览器访问index.html时,Users controller被自动加载,并且它的init函数会在launch之前被调用。

   init函数用来设置controller与view交互,以及与其他controller function  control连接。control函数使监听view类并处理业务更加容易。更新Users controller 实现:当panel被渲染时控制台输出提示信息。

Ext.define('AM.controller.Users', {
    extend: 'Ext.app.Controller',

    init: function() {
        this.control({
            'viewport > panel': {
                render: this.onPanelRendered
            }
        });
    },

    onPanelRendered: function() {
        console.log('The panel was rendered');
    }
});

   以上更新了init函数,使用this.control设置在views上的监听。control函数使用新的ComponentQuery引擎快速、简便的获得在页面上的components。简言之,它通过类似CSS选择器的方式找到页面上匹配的component。

   在上边的init函数中,‘viewport>panel’,解释为“找出Viewport下的所有Panel子元素”。然后我们提供了一个匹配事件名称的对象,来处理功能。整体的效果是,在任何时候,任何component,只要匹配上选择器,就触发渲染事件。事件onPanelRendered功能被调用。

   下面给我们的app润色,添加一个grid

    4)定义一个view

     添加一个表格(grid)展示系统中的用户,创建List.js 路径为app/view/user/List.js,代码如下:

Ext.define('AM.view.user.List' ,{
    extend: 'Ext.grid.Panel',
    alias: 'widget.userlist',

    title: 'All Users',

    initComponent: function() {
        this.store = {
            fields: ['name', 'email'],
            data  : [
                {name: 'Ed',    email: 'ed@sencha.com'},
                {name: 'Tommy', email: 'tommy@sencha.com'}
            ]
        };

        this.columns = [
            {header: 'Name',  dataIndex: 'name',  flex: 1},
            {header: 'Email', dataIndex: 'email', flex: 1}
        ];

        this.callParent(arguments);
    }
});

    在这个例子中我们继承了Grid组件并且设置了别名,这样可以作为一个xtype来使用它。我们还添加了表格应该渲染的store和columns。

    接下来,需要把view添加到controller中。因为我们用'widget.'格式设置了别名,我们可以把'userlist'作为一耳光xtype来用,就像之前的'panel'一样。

Ext.define('AM.controller.Users', {
    extend: 'Ext.app.Controller',

    views: [
        'user.List'
    ],

    init: ...

    onPanelRendered: ...
});

    然后修改app.js通过userlist来渲染页面。

 

Ext.application({
    ...

    launch: function() {
        Ext.create('Ext.container.Viewport', {
            layout: 'fit',
            items: {
                xtype: 'userlist'
            }
        });
    }
});

   另外一个需要强调的是user.List放置在views 数组里。当我们launch时,应用程序可以自动加载文件,这样我们就可以使用了。应用程序使用Ext JS 4中新的动态加载机制来动态的从服务器上抓取文件。

   5)控制grid

   在这里,我们的 onPanelRendered 功能仍然被调用。这是因为我们的grid类仍然能够匹配viewport>panel选择器。这是因为我们的类继承了Grid,它反过来继承Panel。

 

  • 大小: 32.7 KB
分享到:
评论

相关推荐

    extjs_4.1.0_community_extjs4-mvc-complex-dashboard.zip

    在"extjs_4.1.0_community_extjs4-mvc-complex-dashboard.zip"这个压缩包中,包含了一个基于ExtJS 4.1.0 MVC模式构建的复杂仪表盘示例。这个示例展示了如何利用ExtJS的MVC设计模式来组织和管理代码,以便创建功能...

    ExtJS-MVC-用户列表实例

    ExtJS是一个强大的JavaScript库,专用于构建富客户端的Web应用程序。它提供了丰富的组件库,包括表格、树形视图、图表和其他...通过学习这个实例,开发者可以更好地理解和掌握ExtJS的MVC模式及其在实际项目中的应用。

    extjs-mvc-architecture.pdf

    为了应对这一挑战,ExtJS 4 引入了一种新的应用架构,即MVC(Model-View-Controller)架构,以提高代码的可组织性与可维护性。这种架构不仅简化了开发过程,还提升了应用的扩展性和性能。 #### 二、MVC架构的核心...

    Extjs4-学习指南

    ### Extjs4 学习指南知识点汇总 #### 1. Extjs初步 ##### 1.1 获取Extjs - **获取途径**:访问官方网站 http://extjs.org.cn/ 下载所需的 Extjs 发布包。 ##### 1.2 搭建学习环境 - **前提条件**:确保计算机上...

    extjs4MVC实现

    4. MVC 的优点 - 代码组织清晰,便于维护和扩展。 - 提供了数据绑定机制,使视图能自动响应模型的改变。 - 提高了开发效率,通过解耦模型、视图和控制器,可以独立地开发和测试各个部分。 5. 进阶使用 - 使用 ...

    extjs4-ssi例子

    4. MVC模式:掌握ExtJS中的Model、View、Controller架构,便于组织和管理代码。 5. 用户权限管理:了解如何设置角色和权限,控制用户对系统的访问。 6. 动态菜单:学习创建响应式菜单,根据用户角色和权限动态调整...

    Extjs4 + Asp.net MVC Demo

    总结来说,"Extjs4 + Asp.net MVC Demo"是一个很好的学习资源,它演示了如何利用这两种技术构建松耦合的Web应用,实现高效的页面交互和数据管理。通过学习这个Demo,开发者可以掌握前端MVC的组织方式,了解如何在...

    Extjs4 MVC小实例

    ExtJS 4是一个强大的JavaScript库,用于构建交互式的、数据驱动的Web应用程序。MVC(Model-View-Controller)...通过学习这个实例,你可以更好地掌握ExtJS 4中的MVC架构,为构建复杂、高效的企业级Web应用打下基础。

    EXTJS4+MVC+JSP-buy360用户管理系统源码

    EXTJS4+MVC+JSP-buy360用户管理系统源码是一款基于EXTJS4、MVC架构和JSP技术开发的用户管理平台。...开发者可以通过源代码学习EXTJS4的组件使用、MVC模式的实践以及JSP与EXTJS的结合方式,对提升Web开发技能大有裨益。

    extJS4 MVC demo项目入门

    在学习extJS4 MVC时,开发者还应掌握JavaScript面向对象编程的思想,以及如何高效利用extJS提供的各种组件和插件来构建用户界面。最后,通过项目实践不断优化和重构代码,提高应用的性能和用户体验。

    ext4-与-mvc

    通过分析和学习这个项目,初学者可以深入理解EXTJS的MVC工作原理,并学会如何在实际项目中应用。同时,需要注意的是,项目中可能涉及到与数据库的连接,因此需要配置正确的数据库连接信息以确保数据的正常存取。

    extjs4.2 desktop mvc

    EXTJS 4.2 Desktop MVC 是一个基于EXTJS 4.2版本的桌面应用程序框架,它结合了MVC(Model-View-Controller)设计模式,为开发者提供了构建富客户端桌面应用的强大工具。EXTJS是一个流行的JavaScript库,专门用于创建...

    extjs4Mvc事例

    通过学习这个例子,你可以更好地理解如何在实际项目中运用ExtJS 4 MVC模式来构建高效、模块化的Web应用程序。 这个压缩包文件"Ext4Mvc"可能包含了源代码、示例应用程序、文档或教程,这些都是为了帮助开发者更好地...

    ExtJs视频教程整包打包

    Extjs4学习指南21集无代码 extjs网上商城项目 ExtJs视频教程 google调试extjs视频 从基础到实战ExtJs全程精通 传智蔡世友ExtJs视频教程 浪曦ExtJs,永久有效,所有视频解压密码相同,在文档中有写,如有问题请及时...

    ext-4.X学习文档

    extjs-4-入门 extjs-4-类系统介绍 extjs-4-数据详解 extjs-4-组件详解 extjs-4-Grids详解 extjs-4-布局和容器 ExtJS 4 表单 ExtJS 4 树 extjs-MVC架构讲解 个人学习资料收集

    Extjs + Spring MVC + hibernate + mysql

    标题 "Extjs + Spring MVC + hibernate + mysql" 涉及的是一个综合性的Web应用程序开发框架,结合了前端UI库、后端MVC框架、ORM工具和关系型数据库。让我们详细了解一下这些技术及其在实际项目中的应用。 1. ExtJS...

    extjs在ASP.NET MVC4的使用

    在"extjs在ASP.NET MVC4的使用"这个主题中,我们主要关注的是如何在MVC4项目中集成和利用ExtJS的功能。以下是一些关键知识点: 1. **创建ASP.NET MVC4项目**:首先,我们需要创建一个新的ASP.NET MVC4项目。在...

    ExtJS4 MVC演示项目

    这个"ExtJS4 MVC演示项目"是一个很好的学习资源,可以帮助开发者了解如何在实际应用中组织和管理代码。 **MVC模式** 1. **模型(Model)**:在ExtJS4中,模型用于存储和管理数据。它可以与后台服务器进行交互,...

    ExtJS4 MVC 混合实例

    本实例是针对新手级别的学习资料,旨在帮助初学者理解并掌握ExtJS4中的MVC模式。 MVC模式是一种软件设计模式,它将应用程序分为三个核心部分:模型(Model)、视图(View)和控制器(Controller)。在ExtJS4中,这...

    ExtJS4.0-WEB开发项目源代码

    在“ExtJS4.0-WEB开发项目源代码”这个资源中,你将有机会接触到基于ExtJS 4.0版本的项目实例,这对于学习和理解ExtJS的应用开发是非常有价值的。 首先,让我们深入了解ExtJS 4.0的关键特性: 1. **组件化**:...

Global site tag (gtag.js) - Google Analytics