zoukankan      html  css  js  c++  java
  • Extjs系列篇(2)—-初步了解

    我们接着前一章进行学习,前面我们介绍了如何去搭建一个Extjs的环境,并且实现了学习每个语言都最先学习的HelloWorld这样一个小程序。

    在学习Extjs的语法之前我们应该对js有一定的了解,否则很多地方都不太能够理解。

     一、用原始的方式来创建一个window

    1 var win = new Ext.window.Window({
    2             width : 400,
    3             height: 300,
    4             title:'flyknows'
    5         });
    6 win.show();

    这里我们通过new的方式去创建了一个Extjs的windows对象,并且给了几个属性。这些属性我们都可以再Extjs的api文档中查阅到。然后通过show()这个方法将窗体显示出来。

    二、Extjs4.0通过create方法去创建窗体

    1 var win = Ext.create('Ext.window.Window',{
    2             width : 400,
    3             height: 300,
    4             title:'flyknows'
    5         });
    6 win.show();

    这也是Extjs4.0推荐我们创建对象所用的一种方式。第一个参数是创建对象的类型,第二个参数是用json格式的表示的属性。这样也可以创建出一个窗体对象。

    三、Extjs基本事件机制

    我们实现一个点击按钮然后弹出窗体的事件,首先在页面创建一个button:

    1 <button id="mybutton">click</button>

    然后再来写它的触发事件:

    1 Ext.get('mybutton').on("click",function(){
    2     win.show();
    3 });

    四、通过define自定义类并且集成(extend)window

     1 Ext.define("myWin",{
     2             extend : 'Ext.window.Window',
     3             400,
     4             height: 300,
     5             title:'flyknows',
     6             newtitle:'new flyknows',
     7             mySeyTitle:function(){
     8                 this.title = this.newtitle;
     9             },
    10             initComponent:function(){
    11                 this.mySeyTitle();
    12                 this.callParent(arguments);
    13             }
    14 });

    这种方式就相当于与自定义一个类,然后可以对它的属性实现get、set方法,同时可以初始化组件。调用这个组件的方式和之前一样,可以采用create的方式。

    五、requires使用命名空间异步加载

    在php中require的作用是将某个文件引入进来,在Extjs中实现的其实也是类似的功能,例如,我们在程序运行时就加载所有的js文件,这样页面初始化的速度肯定很慢,我们何不在需要用到的时候自动对其进行异步加载。这样也可以缓解服务器的压力,并且在我们的页面中也不需要加上script src这样的代码了。具体实现如下:

    首先创建一个自定义的窗体在一个新的js文件中,命名myWin.js:

     1 Ext.define("lesson2.ux.myWin",{
     2             extend : 'Ext.window.Window',
     3             400,
     4             height: 300,
     5             config:{
     6                 price:500
     7             },
     8             title:'flyknows',
     9             newtitle:'new flyknows',
    10             mySeyTitle:function(){
    11                 this.title = this.newtitle;
    12             },
    13             initComponent:function(){
    14                 this.mySeyTitle();
    15                 this.callParent(arguments);
    16             }
    17 });

    这里的config中配置的属性会自动的get和set

    注意我的命名,然后在需要用到的js文件的前面进行配置:

    1     Ext.Loader.setConfig({
    2         enabled:true,
    3         paths:{
    4             myApp:'lesson2/ux'
    5         }
    6     });

    这里的path就需要与前面自定义窗体命名的前缀要一致,最后我们将它创建出来:

    1 Ext.get("mybutton").on("click",function(){
    2 
    3             //实例化
    4             var win = Ext.create('lesson2.ux.myWin',{
    5                 title : 'luoxiao',
    6                 requires:["lesson2.ux.myWin"]
    7             }).show();
    8             alert(win.getPrice());
    9 });

    这里create和requires命名需要与自定义窗体命名相同。这样,我们在页面中可以不用引入myWin.js这个文件,当需要进行create的时候再异步加载它。因为我们将price配置在config中,因此我们直接可以调用它的getPrice()这个方法。

    六、mixins

    mixins的解释是混入,其实它和extends有点类似,一个是将别人的方法拿给自己去用,一个是继承与父类已有的方法,但是他们的区别在于extends只能继承一个元素,然后mixins却可以混入多个元素的方法,这和java中的继承和接口有点相像,extends只能继承一个父类,但是却可以implements多个接口。

    例如:

     1                 Ext.define("say",{
     2             cansay:function(){
     3                 alert("hello");
     4             }
     5         });
     6 
     7         Ext.define("sing",{
     8             sing:function(){
     9                 alert("sing");
    10             }
    11         });
    12 
    13         Ext.define('user',{
    14             mixins:{
    15                 say:'say',
    16                 sing:'sing'
    17             }
    18         });
    19 
    20         var u = Ext.create("user",{});
    21         u.cansay();
    22         u.sing();

    通过mixins这种方式,我们将say和sing它们方法混入user这个类中,那么创建出来的实例就可以直接调用它们的方法。

  • 相关阅读:
    第 13 章 外观模式
    第 12 章 桥接模式
    第 10 章 适配器模式
    第 7 章 原型模式
    PHP的预处理语句的使用
    PHP的异常处理
    PHP中PDO函数的使用
    PHP的PDO模式数据操作
    PHP的 Final关键字、类(文件)的加载和命名空间
    PHP的魔术常量和魔术方法
  • 原文地址:https://www.cnblogs.com/luoxiao-wang/p/3581830.html
Copyright © 2011-2022 走看看