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 ...
随机推荐
- Head First Python之3文件与异常
文件基本操作 Python从文本读取数据时,一次会到达一个数据行. sketch.txt文件 Man: Is this the right room for an argument? Other Ma ...
- 深入理解java虚拟机(三)对象回收判断算法以及死亡过程
在堆里面存放着Java几乎所有的对象实例,垃圾收集器要进行垃圾回收,要做的第一步便是找出那些对象是需要回收的. 怎么判断对象是否需要回收? 常用的方法有两种. 1.引用计数算法.为每一个对象添加一个引 ...
- 说一下自己对于 Linux 哲学的理解
查阅了一些资料,官方的哲学思想貌似是: 一切皆文件 由众多单一目的的小程序,一个程序只实现一个功能,多个程序组合完成复杂任务 文本文件保存配置信息 尽量避免与用户交互 什么,你问我的理解?哲学思想?E ...
- WinAPI 字符及字符串函数(10): lstrcpy - 复制字符串
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, For ...
- [SIP00]SIP 概念总结
SIP --------------------------- Session Initiation Protocol --------------------------- create, ...
- WPF 简洁的主界面
用的是dev的TileLayouotControl控件. <dxwui:PageAdornerControl Header="" Padding="30" ...
- 魅力 .NET:从 Mono、.NET Core[转]
前段时间,被问了这样一个问题:.NET 应用程序是怎么运行的? 当时大概愣了好久,好像也没说出个所以然,得到的回复是:这是 .NET 程序员最基本的...呵呵! 微软开源,其实不只是对 .NET 本身 ...
- Jenkins安装笔记
自动化架构搭建过程中为实现当开发源码更新时自动化脚本同步触发自动执行,使用到持续集成工具Jenikins. Jenikins官网资料: 官方网站:http://jenkins-ci.org/ 插件下载 ...
- code::blocks学习
code::block不能调试问题 今天在codeblock不能进行调试,百度总结如下: 1 进行调试的必须是一个project而不能是一个单一的cpp文件. 2 project的路径不能包含中文,尽 ...
- docker搭建elk+cerebro环境
ELK的帮助手册 Docker Hub官网:https://hub.docker.com/r/sebp/elk/ Docker ELK使用文档:http://elk-docker.readthedoc ...