`
姜中秋
  • 浏览: 88764 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

Extjs 角角落落整理(一)MVC模式

阅读更多
Extjs 角角落落整理(一)MVC模式

Extjs的MVC结构
app
   controller
   model
   store
   util
   view
   app.js
   index.html
app是整个项目的根目录
controller放置ext的控制器,处理业务
model放置一些模型,这个与下面的store是关联的(要在contoreller定义)
store放置grid等组件的store(要在contoreller定义)
util放置帮助文件,主要是一些公共方法抽取放到util里面(要在contoreller注明)
view放置视图组件比如window、grid、tree等(要在contoreller定义)
app.js开启动态加载
index.html项目首页

app.js代码示例
/**
 * 应用层
 * className:开启动态加载
 */


Ext.onReady(function(){
	Ext.QuickTips.init();//支持tips提示
	Ext.Loader.setConfig( {
		enabled : true
	});//意思是开启Ext.Loader Ext.Loader是动态加载的核心

	Ext.Loader.setPath('Ext.ux', extPath+'/Extjs4/examples/ux');

	Ext.require([
	    'Ext.selection.CellModel',
	    'Ext.grid.*',
	    'Ext.data.*',
	    'Ext.util.*',
	    'Ext.state.*',
	    'Ext.form.*',
	    'Ext.ux.CheckColumn'
	]);

	Ext.application({
		//命名空间
	    name: 'LP',
		//应用的根目录
		appFolder : extPath+'/app',
		autoCreateViewport : true,

		//声明所用到的控制层
	    controllers: [
			'LP.controller.LPController'
		//	'LP.controller.SearchController'
	    ],
		//当前页面加载完成执行的函数
	    launch: function() {
			  Ext.override(Ext.view.BoundList,{
                    onMaskBeforeShow: function(args){
                            var loadingHeight = this.loadingHeight;
                            this.getSelectionModel().deselectAll();
                            if(loadingHeight){
                                    this.setCalculatedSize(undefined, loadingHeight);
                            }
                            return this.isVisible();
                    }
            });
			 if(Ext.grid.RowEditor) {//按钮汉化问题 
				    Ext.apply(Ext.grid.RowEditor.prototype, {
				        saveBtnText: '保存',
				        cancelBtnText: '取消',
				        errorsText: '错误信息',
				        dirtyText: '已修改,你需要提交或取消变更'
				    });
				}  
   			}
	}); 
});



组件的命名规范
以view下面的组件为例(store、model、util类似)
现在写一个viewport,viewport是放在view下面的,同时命名要大写,结构:命名空间+文件夹+名字
Ext.define('LP.view.Viewport',{
    extend: 'Ext.Viewport',
    layout: 'border',//viewport 以fit布局
    alias:'widget.viewPort',//别名
    defaults:{
//		bodyStyle:'padding 2px' 
	},//样式
    requires : [
        'LP.view.North',//头部区域
        'LP.view.West',//左侧树
        'LP.view.Center',//中间展示区域
        'LP.view.East',//右侧区域
        'LP.view.South'//底部footer
    ],
    initComponent : function(){
        var me = this;
        Ext.apply(me, {
            
        	items: [
                    {
                  	  xtype: 'box',
                  	  id:"header-panel",
                        region: 'north',
                        html: '<h1> lindenpat</h1>',
                        height: 30
                    },
                    {
                 	   		xtype:'eastPanel'  
                 	   		,margins: '2 5 0 0',
                    },  
                    {
						   xtype:'westPanel' 
						   ,margins: '2 0 0 5',
					  },{
					    xtype:'centerPanel'
					    ,margins: '2 0 0 0',
					  },
					  {
					    xtype:'southPanel'
					    ,margins: '0 5 5 5',
					  }
              ]
        });
        me.callParent(arguments);
    }
});


comtroller写法,我们现在定义SearchController,放在controller下面

Ext.define('LP.controller.SearchController',{
	extend:'Ext.app.Controller',
	stores:[// 都是应该空间名称,不能应用的别名
			'LP.store.WestTreeStore', 
	       ],
			
		views:[
			  'LP.view.Viewport','LP.view.tree.WestTree', 
			  ],

		models:[
		         'LP.model.CenterGridModel' 
		        ],
		refs:[
		      {ref: 'viewPort',selector:'viewPort'},// viewPort内容
		      {ref: 'westPanel',selector:'westPanel'},// westPanel内容
		      {ref: 'westTree',selector:'westTree'},// westTree内容
		      {ref: 'eastPanel',selector:'eastPanel'},// eastPanel内容
		      {ref: 'centerPanel',selector:'centerPanel'},// centerPanel内容
		      {ref: 'centerFormPanel',selector:'centerFormPanel'},
		      {ref: 'button[id=FormButton1]',selector:'centerPanel > centerFormPanel > button[id=FormButton1]'},// 中间面板 
		 ],        
	GridUtil:Ext.create('LP.util.GridDoActionUtil'),
	init:function(){
		
		this.control({
			'button[id=logic-add1]':{// 逻辑库 添加
				click:function(btnObj){
			        if (typeof(Ext.getCmp('addLogicWindowId')) == 'undefined') {
						var win= Ext.create('LP.view.window.AddLogicWindow');
						win.show();
					}else{
						Ext.getCmp('addLogicWindowId').show();
					}
				} 
			} 
		});
	} 
});

comtroller声明了stores、views、models
分享到:
评论

相关推荐

    ExtJS的MVC模式

    ExtJS的MVC模式是其框架的核心特性之一,主要用于组织和管理复杂的用户界面代码,确保应用的可维护性和可扩展性。在深入讲解MVC模式之前,先了解一下ExtJS本身。ExtJS是一款基于JavaScript的开源UI库,它提供了一套...

    Extjs4.0 mvc模式开发

    在本工程中,我们将深入探讨ExtJS 4.0的MVC模式,以及如何通过controller、view、model和store来构建应用。 **1. MVC模式** MVC模式是一种软件设计模式,将应用程序分为三个主要组件:模型(Model)、视图(View)...

    Extjs4 + Asp.net MVC Demo

    ExtJS4 + ASP.NET MVC Demo是一个结合了前端ExtJS4框架和后端ASP.NET MVC架构的应用示例,展示了如何在Web开发中实现数据操作的增删改查功能,并且利用了ExtJS4的MVC模式来提高代码的组织性和可维护性。这个Demo还...

    EXTJS简单MVC实例

    只要将解压的文件直接放置到myeclipse的webroot下面,启动tomcat访问。简单的EXTJS mvc框架,设计 store,model,controller,view,window等等,同时展示了一些基本的点击显示、修改等等操作,需要的同学自行下载

    extJS4 MVC demo项目入门

    extJS4 MVC demo项目入门涉及的是前端开发领域的技术要点,主要介绍了extJS4框架中的MVC(Model-View-Controller)模式在实际开发项目中的应用方法,并着重讲述了如何实现前端资源的按需加载和动态加载。在了解这些...

    Extjs4.0+MVC模式+存动态加载

    在这个主题中,我们将深入探讨如何在ExtJS 4.0中结合MVC模式实现动态加载功能。 **MVC模式** MVC模式是一种软件设计模式,它将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller)。在...

    ExtJS4.1实现的mvc模式经典入门案例

    在ExtJS 4.1中,引入了强大的MVC(Model-View-Controller)模式,这是一种设计模式,有助于组织和分离应用程序的不同部分,使得代码更加模块化、可维护。本案例将深入探讨如何使用ExtJS 4.1实现MVC模式。 **一、...

    ExtJS4.0项目教程(MVC)

    MVC(Model-View-Controller)是一种设计模式,用于分离应用程序的数据模型、用户界面和控制逻辑,使得开发更易于维护和扩展。 在学习ExtJS4之前,首先需要获取ExtJS的开发资源。可以从官方站点...

    EXTJS学习,webform+mvc routeing extjs布局 适合初学者

    EXTJS学习,webform+mvc routeing extjs布局 适合初学者

    ExtJS MVC 官方实例

    ExtJS是一款强大的JavaScript库,用于构建富客户端的Web应用程序,而MVC模式则是它组织代码和管理应用程序状态的核心设计模式。在这个官方实例中,我们可以深入理解如何在实际项目中有效地运用ExtJS的MVC模式。 MVC...

    ExtJs4.0 mvc 模式

    在本实例中,我们将深入探讨ExtJS 4.0中的MVC模式及其组成部分。 1. **Model(模型)**: - Model是数据存储的抽象,它封装了数据和与数据相关的操作。在ExtJS 4.0中,你可以定义模型类来描述数据结构,包括字段...

    ExtJS4官方指南:MVC架构简体中文版宣贯.pdf

    在本文中,我们将深入探讨ExtJS 4的MVC架构,这是一种强大的工具,用于构建复杂且易于维护的富客户端应用程序。MVC,即Model-View-Controller,是一种设计模式,它将应用程序的不同部分分离,以提高可读性、可扩展性...

    ExtJs+ASP.NET MVC实例

    **ExtJs+ASP.NET MVC 实例详解** 在现代Web应用开发中,前端界面的交互性和动态性变得越来越重要。`ExtJs`是一个强大的JavaScript框架,它提供了丰富的组件库和强大的数据管理功能,使得构建复杂的用户界面变得简单...

    extjs在ASP.NET MVC4的使用

    通过以上步骤,我们可以实现一个基于ExtJS的ASP.NET MVC4应用程序。这个Demo可能包含了简单的组件示例,如创建一个表格展示从后端获取的数据,或者一个表单用于用户输入,然后通过Ajax提交到服务器。深入学习和实践...

    Extjs4 MVC小实例

    这个“Extjs4 MVC小实例”很可能是为了展示如何在实际项目中有效地运用MVC模式。 **模型(Model)** 在ExtJS 4的MVC中,模型负责管理应用程序的数据。模型类通常与后端服务器的数据接口进行交互,处理数据的加载、...

    自己写的ExtJS4.0用MVC的示例

    在这个示例中,我们将会深入探讨如何在ExtJS 4.0中运用MVC模式。 首先,MVC模式是软件设计的一个经典模式,它将应用程序分为三个主要部分:模型(Model)、视图(View)和控制器(Controller)。在ExtJS 4.0中,这...

    ExtJs+ASP.net+MVC

    ASP.NET MVC 是微软开发的一个开源Web框架,它结合了模型、视图和控制器的设计模式,为开发者提供了一种组织和构建动态网站的高效方式。C# 是ASP.NET MVC框架背后的编程语言,它是一种面向对象的、类型安全的、现代...

    ExtJs 4 中的MVC应用架构

    ExtJS 4 中的MVC应用架构是一种组织大型客户端应用程序的方式,旨在提高代码的可维护性和可扩展性。随着应用程序的复杂性和开发人员数量的增长,传统的编程方式可能会导致难以管理和控制的代码库。ExtJS 4 引入了...

    ExtJS4 treepanel与girdpanel简单案例(包括MVC模式与非MVC模式)

    用ExtJS4实现的treepanel与gridpanel的简单互动案例 包含mvc开发模式与普通开发模式两种 普通开发模式:需要在引入js文件夹中的main.js文件 mvc开发模式:需要引入app文件夹中的app.js文件 适合初学extjs4的朋友

Global site tag (gtag.js) - Google Analytics