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这个类中,那么创建出来的实例就可以直接调用它们的方法。

  • 相关阅读:
    POJ 1681 Painter's Problem(高斯消元法)
    HDU 3530 Subsequence(单调队列)
    HDU 4302 Holedox Eating(优先队列或者线段树)
    POJ 2947 Widget Factory(高斯消元法,解模线性方程组)
    HDU 3635 Dragon Balls(并查集)
    HDU 4301 Divide Chocolate(找规律,DP)
    POJ 1753 Flip Game(高斯消元)
    POJ 3185 The Water Bowls(高斯消元)
    克琳:http://liyu.eu5.org
    WinDbg使用
  • 原文地址:https://www.cnblogs.com/luoxiao-wang/p/3581830.html
Copyright © 2011-2022 走看看