Ext学习笔记3-事件及组件

10-EXT中的事件

--对于外界影响的反应,在EXT中还支持事件队列模式.由Ext.util.Observable类支持


Ext.namespace("Ext.wang"); //自定义命名空间
Ws = Ext.wang;  //命名空间别名

Ws.Person = function(_cfg){   //类构造方法
   Ext.apply(this, _cfg);
  
   this.addEvents(   //  一.定义事件
        "nameChange",
        "sexChange"
   )
};
PEN = Ws.Person; //类别名
//**********************************二.发布事件 fireEvent("EventName",若干参数)************************************
Ext.extend(PEN,Ext.util.Observable,{
               name:"",
               sex:"",
               setName:function(_name){
                    if(this.name != _name){
                        this.fireEvent("nameChange", this, this.name, _name);     //二.发布事件
                        alert("nameChange事件")
                        this.name = _name;
                    }
               },
               setSex:function(_sex){
                    if(this.sex != _sex){
                        this.fireEvent("sexChange", this, this.name, _sex);        //二.发布事件
                         alert("sexChange事件")
                    }
               }
          })
         
         
         
//*************************************三.订阅事件(Ext.get(element).on(Event,fun))*************************************

var _person = null;
Ext.onReady(function(){
  
    var txt_name = Ext.get("txt_name");
    var txt_sex = Ext.get("txt_sex");

    _person = new PEN();

    _person.on("nameChange",function(_person, _old, _new){             //订阅事件
                    txt_name.dom.value = _new;    
                });   
    _person.on("sexChange",function(_person, _old, _new){               //订阅事件
                    txt_sex.dom.value = _new;
                });
               
     //******************************************************
    
     Ext.get("btn_change").on("click",function(){
         _person.setName(prompt("请输入名字:",""));
         _person.setSex(prompt("请输入性别:",""));      
    });
       
})

<!--HTML代码-->

姓名:<input id="txt_name" /><br />
性别:<input id="txt_sex" /><br />
<input type="button" value="输入" id="btn_change"/>

11-Ext_button组件

* 构造参数: 
     - text : 按钮上的名称
     - handler : 指定一个函数句柄, 在默认事件触发时调用, 此时的默认事件为click
     - listeners : 这个是在对象初始化之前, 就将一系列事件进行定义的手段, 在进行组建化编程时,特别有用

* 属性:
     - text : 获得当前按钮上的名称
     - minWinWidth : 按钮的最小宽度
     - renderTo : 将当前对象所生成的HTML对象存放进指定的对象中

* 方法:
     - setText : 获得当前按钮上的名称

* 事件:
     - click, mouseover, mouseout 等

 

Ext.onReady(function(){
    var btn = new Ext.Button({
        renderTo:Ext.getBody(),      // 添加到该元素内如
        text:'点我啊',               //构造参数
        minWidth:100,
        handler:function(){          //添加事件处理  默认为click
            alert("你点我干吗?我叫"+this.text);
        },
        listeners:{                 //添加事件监听
            'mouseover':function(){
                this.setText("鼠标在上面!");
            },
            'mouseout':function(){
                this.setText("点我啊");
            }
        }
    });
})


12-Ext_form_TextField组件

* 属性:
     - fieldLabel : 文本框的标签名称

* 方法:
     - getValue() : 得到当前文本框的值

* 由Ext_form_TextField组建产生的引申话题
     - Ext.layout.FormLayout : 只有在次布局下才能正确现实文本框的标签名,
                                                 布局的宿主对象必须是Ext.Container或者Ext.Container的子类
     - 在应用FormLayout布局时只要在宿主对象的构造参数中指定layout:'form' 即可
     - Ext.getCmp(string _id) : 得到id为_id的组建对象

示例代码1:

Ext.onReady(function(){
    var textField = new Ext.form.TextField({
        fieldLable:'文本框', 
  //此时并不显示
        renderTo:Ext.getBody()
    });
});

示例代码2:

Ext.onReady(function(){
    var _panel = new Ext.Panel({
        renderTo:Ext.getBody(),
        layout:'form',
        labelWidth:30,
        listeners:{
            'render' : function(_panel){                 //这里之所以在这里用这个render事件而不像下面注释掉的代码那样添加组建
                _panel.add(new Ext.form.TextField({     //,是因为那样的话很可能该组建还没有实例化完全,久像其中添加组建,很可能会出错!
                  
  fieldLabel:'姓名',    //有了布局,它就显示出来了
                    id:'txt_name'
                }))
            }
        }
    });
   
    //_panel.add(new Ext.form.TextField({
   //                fieldLabel:'姓名11',
  //                id:'txt_name1'
 //            }));
 
    new Ext.Button({
        text:"按钮",
        renderTo:Ext.getBody(),
        handler:function(){
            alert(Ext.getCmp('txt_name').getValue());
        }
    });
})


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乐韬科技

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值