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 ...
随机推荐
- linux 学习管道 和重定向
开源文化的理念之一 就是不要重新发明轮子 在linux 系统中大多是都是非常简单的命令,每个命令都是实现一个或者几个简单的功能,我们可以将不同的命令组合在一起 来达到复杂的功能的目的,在linux中因 ...
- [转载]Java集合系列大全总结
Java 集合系列目录(Category) 22:06:49 2019-02-27
- php中this、self、parent解析
概述: this:指向类当前对象的指针:self:指向类本身,一般指向类中的静态变量:parent:指向父类的指针,一般使用parent来调用父类的构造函数. 下面通过程序详细介绍: 1.this & ...
- <a>标签的用法以及[@text_cut]
<a href="${a.url}" target="_blank">[@text_cut s=a.title len=titLen append= ...
- 17、Semantic-UI之分页插件
在很多的前端开发框架中都会有提供分页插件,但是分页插件的使用如果手动编写还是比较复杂的.使用Semantic-UI中的分页插件更加简单方便.分页插件的使用必须要和后台结合. 示例:定义分页插件 & ...
- opencv——pcb上找圆mark点(模板匹配)
#include "stdafx.h" #include <cv.h> #include <highgui.h> #include <cxcore.h ...
- RzToolbutton用法
- UML uml建模工具
UML建模工具 一.UML的概念: 参考百度百科: https://baike.baidu.com/item/%E7%BB%9F%E4%B8%80%E5%BB%BA%E6%A8%A1%E8%AF%AD ...
- “全栈2019”Java第五十一章:继承与final关键字详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- Mac环境下安装python库时出现ModuleNotFoundError: No module named 'XXX'
在使用pip3安装爬虫的一些有关库时发现安装成功后,import时发现又找不到,后来发现一个解决方法. 在Anaconda-Navigator里面打开environment里面寻找发现真的没有,这时再 ...