sencha touch dataview 中添加 button 等复杂布局并添加监听事件

config 中的属性默认都会自动生成 getter setter applier updater 四个方法。
applier 在调用 setter 时被调用, updater 在属性值被改变时调用
Ext.application({
    launch: function () {
        // DataItem 相当与 list 中的一行 (row)
        // 对应 store 中的一条数据
        // 相当于 适配器
        Ext.define('MyListItem', {
            extend: 'Ext.dataview.component.DataItem',
            requires: ['Ext.Button'],
            xtype: 'mylistitem',
            config: {
                // 水平布局
                layout: 'hbox',
                // 每行有一个 panel 和 两个 button
                employeeName: true,
                callButton: true,
                smsButton: true,
                defaults: {
                    // padding:10
                    margin: 5
                },
                // 当控件实例化时可调用一个方法初始化
                // 在这里将 view 与 data 关联起来
                dataMap: {
                    getEmployeeName: {
                        setHtml: 'name'
                    },
                    getCallButton: {
                        // setText: 'name'
                    },
                    getSmsButton: {
                        // setText: 'name'
                    }
                }
            },
            // apply 时实例化该控件
            applyEmployeeName: function (config) {
                return Ext.factory({flex: 1}, Ext.Panel, this.getEmployeeName());
            },
            applyCallButton: function (config) {
                return Ext.factory({text: '打电话'}, Ext.Button, this.getCallButton());
            },
            applySmsButton: function (config) {
                return Ext.factory({text: '发短信'}, Ext.Button, this.getSmsButton());
            },
            updateEmployeeName: function (newEmployeeName, oldEmployeeName) {
                if (oldEmployeeName) {
                    this.remove(oldEmployeeName);
                }
                if (newEmployeeName) {
                    this.add(newEmployeeName);
                }
            },
            updateCallButton: function (newcallButton, oldcallButton) {
                if (oldcallButton) {
                    this.remove(oldcallButton);
                }
                if (newcallButton) {
                    // update 时绑定一个  tap  事件
                    newcallButton.on('tap', this.oncallButtonTap, this);
                    this.add(newcallButton);
                }
            },
            updateSmsButton: function (newsmsButton, oldsmsButton) {
                if (oldsmsButton) {
                    this.remove(oldsmsButton);
                }
                if (newsmsButton) {
                    newsmsButton.on('tap', this.onsmsButtonTap, this);
                    this.add(newsmsButton);
                }
            },
            oncallButtonTap: function (button, e) {
                var record = this.getRecord();
                Ext.Msg.alert(
                    'Hello',
                    record.get('name')
                );
            },
            onsmsButtonTap: function (button, e) {
                var record = this.getRecord();
                Ext.Msg.alert(
                    'Hello',
                    record.get('name')
                );
            }
        });
        Ext.create('Ext.DataView', {
            fullscreen: true,
            store: {
                fields: ['name'],
                data: [
                    {name: 'Leslie'},
                    {name: 'Allan'},
                    {name: 'Caitlin'},
                    {name: 'Peter'}
                ]
            },
            // 必须设置
            useComponents: true,
            // 指定每一行的布局
            defaultType: 'mylistitem'
        });
    }
});
sencha touch dataview 中添加 button 等复杂布局并添加监听事件的更多相关文章
- Android中Button的五种监听事件
		
简单聊一下Android中Button的五种监听事件: 1.在布局文件中为button添加onClick属性,Activity实现其方法2.匿名内部类作为事件监听器类3.内部类作为监听器4.Activ ...
 - Second Day: 关于Button监听事件的三种方法(匿名类、外部类、继承接口)
		
第一种:通过匿名类实现对Button事件的监听 首先在XML文件中拖入一个Button按钮,并设好ID,其次在主文件.java中进行控件初始化(Private声明),随后通过SetOnClickLis ...
 - Android 给按钮添加监听事件
		
在安卓开发中,如果要给一个按钮添加监听事件的话,有以下三种实现方式 1.方式一 public class MainActivity extends ActionBarActivity { @Overr ...
 - jquery中,使用append增加元素时,该元素的绑定监听事件失效
		
举例:如果在一个<div id="resultArea"></div>中,通过append添加一个id="checkOutTip"的文本 ...
 - miniui 给表格行添加监听事件的几种方法以及点击某列列名数据不能排序的问题
		
最近在使用miniui框架做开发,在做表格行的点击监听事件中发现了几个属性,都可以起到监听效果但是执行的结果却大有不同.好了废话不多说,直接上代码. <div id="pageGrid ...
 - jquery中,使用append增加新元素时,新增元素的绑定监听事件失效的解决办法
		
$("outerSelector").on("eventType","innerSelector",function(){}); 举例:如果 ...
 - EventTrigger动态添加监听事件
		
在 Unity3D 中,通过拖拽的方式在 EventTrigger 组件中添加监听事件就不多说了,很简单.这里主要说的是通过代码动态往 EventTrigger 组件中添加监听事件,有个很坑的地方,就 ...
 - JPanel添加键盘监听事件
		
因为在自己的游戏需求中谢了要用键盘控制飞机的移动,所以用到键盘监听事件,但是使用了JPanel之后添加了键盘监听事件,按相应的方向键飞机并没有反应.但是如果是为JFrame的内容面板加则会有反应. 为 ...
 - java中的监听事件
		
java监听器实现的类 1.ServletContextListener:对servlet上下文的创建和销毁监听 2.ServletContextAttributeListener:监听servlet ...
 
随机推荐
- 领域模型驱动设计(Domain Driven Design)入门概述        -----DDD  解释
			
软件开发要干什么: 反映真实世界要自动化的业务流程 解决现实问题 领域Domain Domain特指软件关注的领域 在不能充分了解业务领域的情况下是不可能做出一个好的软件 领域建模 领域模型驱动设计 ...
 - Android 文字垂直居中
			
android中自定义控件,自己绘制文字canvas.drawText()的时候,怎样才能让文字垂直居中那? drawText()的方法说明 也就是使用paint画笔在(X,Y)处进行绘制,X为横向坐 ...
 - 说一下自己对于 Linux 哲学的理解
			
查阅了一些资料,官方的哲学思想貌似是: 一切皆文件 由众多单一目的的小程序,一个程序只实现一个功能,多个程序组合完成复杂任务 文本文件保存配置信息 尽量避免与用户交互 什么,你问我的理解?哲学思想?E ...
 - 洛谷P2634 [国家集训队]聪聪可可 (点分治)
			
题目描述 聪聪和可可是兄弟俩,他们俩经常为了一些琐事打起来,例如家中只剩下最后一根冰棍而两人都想吃.两个人都想玩儿电脑(可是他们家只有一台电脑)……遇到这种问题,一般情况下石头剪刀布就好了,可是他们已 ...
 - BP神经网络研究(一)
			
本随笔参考文章:<BP神经网络详解与实例>(链接: https://pan.baidu.com/s/1e2niIvD9KtLXEqwXtgdXxw 密码: vb8d) 本随笔原创,转发请注 ...
 - Windows上传文件到linux 使用winscp
			
Windows上传文件到linux 使用winscp, winscp下载目录 https://sourceforge.net/projects/winscp/postdownload?source=d ...
 - oracle goldengate的两种用法
			
此文已由作者赵欣授权网易云社区发布. 欢迎访问网易云社区,了解更多网易技术产品运营经验. 自从oracle收购来了goldengate这款产品并以后对它做了一系列改进后,有非常多的用户使用它做数据迁移 ...
 - ubuntu里面如何以root身份使用图形界面管理文件?
			
nautilus 是gnome的文件管理器,但是如果不是root账号下,权限受限,我们可以通过以下方式以root权限使用! 一,快捷键“Ctrl+Alt+t”,调出shell. 二,在shell中输入 ...
 - [BZOJ5212][ZJOI2018]历史
			
传送门(洛谷) 人生第一道九条可怜……神仙操作…… 看着题解理解了一个早上才勉强看懂怎么回事…… 简化一下题目就是:已知每一个点access的总次数,求一个顺序使虚实边转化的次数最多 考虑一下,对于x ...
 - PHP 执行系统外部命令的方法 system() exec()
			
PHP作为一种服务器端的脚本语言,像编写简单.或者是复杂的动态网页这样的任务,它完全能够胜任.但事情不总是如此,有时为了实现某个功能,必须借助于操作系统的外部程序(或者称之为命令),这样可以做到事半功 ...