sencha touch2 - 给container 添加tap 事件

背景:在ST中有时候我们需要让不同container组成一个模版。然而我们需要点击某个container时候我们就需要触发事件。但是在container里面是没有tap这个事件的。我们需要手工去去添加注册这个事件。并且你可以选择任意的container注册事件。有两种方法可以注册事件

参考国外一个帖子:

How to set element listeners

http://www.sencha.com/forum/showthread.php?176402-How-to-set-element-listeners


container.js

Ext.define('DingCan.view.component.HomeItem', {
extend : 'Ext.Container',
xtype : 'homeitem',
requires : ['Ext.Label'],


config : {
// 此处的fullscreen要慎用。不然dataview不能显示
// fullscreen : true,

layout : 'hbox',

//方法一:这个地方可以直接给container注册一个事件。确定就是I不便于mvc模式维护
/*listeners : {
tap : {
fn : function() {
console.log('This component was tapped...');
},
element : 'element'
}
},
*/
items : [{
itemId : 'image',
xtype : 'image',
mode : 'tag',
src : '',
height: 57,
    width: 57
}, {
style:{'padding-left': '10px'},

//在initiate函数中会通过这个id来查找到
itemId:'homelistitem',
xtype : 'container',
layout : 'vbox',
items : [{
itemId : 'name',
searchstr : '',
html : ''
}, {
itemId : 'listdes',
html : ''
}]
}]
},


initialize : function() {
this.callParent(arguments);

//方法二:我们通过找到你需要注册的container的itemId属性找到。然后给他手工注册一个tap事件。这种方法有助于用MVC模式编程
//给container加一个tap事件
var me = this;

//找到自己的container
var someItem = this.down('#homelistitem');  

//添加tap事件
someItem.element.on({
scope : me,

//注意这个地方tap事件
tap : function(e, t) {

//里面的函数tapItem函数可以自定义。也就是你才controller里面需要重写的一个函数
someItem.fireEvent('tapItem', me, e, t)
}
})
},


beforeInitialize : function() {
this.imageEl = this.down('#image');
this.nameEl = this.down('#name');
this.listdesEl = this.down('#listdes')
},


setImage : function(image) {
this.imageEl.setSrc(image)
},


setName : function(name) {
this.nameEl.setHtml(name)
},

setSearchstr : function(searchstr){
this.nameEl.searchstr = searchstr
},


setListdes : function(listdes) {
this.listdesEl.setHtml(listdes)
}
})


contoller 的调用

Ext.define('DingCan.controller.SelectStuff', {
extend : 'Ext.app.Controller',


config : {
refs : {
homeList : 'container[itemId="homelistitem"]'
},


control : {
homeList : {

//重写tapitem这个函数
tapItem:'tapHomeList'
},

}


},

//点击container时候会执行此函数
tapHomeList:function(me,e,t){
console.log('tapped me');
},

})

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值