Extjs4 MVC详解

关于一个ext4MVC的例子,代码中有相关注释;

详细见附件(是一个myEclipse项目)

 

本人在使用中的感受:

如果我们这样分层了,有利于组件重用,软件开发和维护,但学习成本很高,要新人接受需要一段时间,在开发中要按照一定规范.

建议不要随便使用这样分层!

 

每一层的介绍:

1,model和store其实就是管数据的,

2,view层,纯界面,极少逻辑代码,逻辑代码都写到controller中,这样好管理.

3,controller,建议逻辑代码都写到这里,这样好管理.

 

关于文件夹名称:

注意文件夹起名controller/model/store/view文件夹名称一定的,

这样每个相应的类名也可以根据这个来取,如:"keel.view.goods.GoodsListView"

keel是整个应用程序的命名空间,view就是view文件夹,goods.GoodsListView就是view文件夹下的goods文件夹的

GoodsListView.js文件;

这样程序就可以用动态加载功能了;

 

controller介绍:

其实我们很大一部分工作就在controller了,例子代码如下:

 

 

 1 /*
 2 商品控制层,
 3 所有逻辑代码都在这里写
 4 */
 5 Ext.define('keel.controller.GoodsCtrl', {
 6     extend: 'Ext.app.Controller',
 7     stores: ['GoodsStore'],//声明该控制层要用到的store
 8     models: ['GoodsModel'],//声明该控制层要用到的model
 9     views: ['goods.GoodsListView','goods.GoodsWinView'],//声明该控制层要用到的view
10     refs: [//相当于一个映射,这样就可以在控制层方便的通过geter取得相应的对象了
11         {
12             ref: 'goodslistview',
13             selector: 'goodslistview'
14         },
15         {
16             ref: 'goodswinview',
17             selector: 'goodswinview'
18         }
19     ],
20     init: function() {
21         this.control({//这里的this相当于这个控制层
22             'viewport > goodslistview': {
23                 afterrender: function(gp){//侦听goodslistview渲染
24                     gp.down('button[action=testBtn1]').on('click',function(){
25                         //侦听goodslistview工具条上action=testBtn1的按钮单击事件
26                         this.showWin();
27                     },this);
28                     
29                     gp.down('button[action=testBtn2]').on('click',function(){
30                         //侦听goodslistview工具条上action=testBtn2的按钮单击事件
31                         alert(this.getGoodslistview().title)
32                     },this);
33                 }
34             },
35             'goodswinview button[action=ok]': {
36                 //侦听goodswinview中action=ok的按钮单击事件
37                 click: function(){
38                     this.getGoodswinview().setTitle(Ext.util.Format.date(new Date(),'Y-m-d H:i:s'));
39                 }
40             }
41         });
42     },
43     showWin : function(){
44         Ext.create('keel.view.goods.GoodsWinView').show();        
45     }
46 });

 

 
 

 

 
posted @ 2017-04-02 23:30  追梦客2008  阅读(564)  评论(0编辑  收藏  举报