扩展js代码

 /*
*list多选扩展
*/
Ext.define('ux.SimpleList', {
alternateClassName: 'simpleList',
extend: 'Ext.List',
xtype: 'simpleList',
config: {
editCls: 'simpleList',
//不加在长按时可能没反应
onItemDisclosure: false,
//是否在多选状态(不可更改)
isSimple: false,
//设置数据主键(可配置)
ckId: 'id',
//默认选择类型,用以应对多种选择情况
defSimpleType: 0,
//多选时弹出菜单栏(可配置)
simpleToolBar: {
//默认位置
docked: 'bottom',
//默认标题,用以应对多种选择情况
defTitle: '删除',
items: [{
xtype: 'button',
text: '全选',
align: 'left',
//标志是全选还是取消全选
isSimple: true,
listeners: {
tap: function (button) {
var list = button.up('list');
if (this.isSimple) {
this.setText('取消全选');
list.selectAll();
} else {
this.setText('全选');
list.deselectAll();
}
this.isSimple = !this.isSimple;
}
}
},
{
cls: 'moreButton',
xtype: 'button',
text: '取消',
align: 'right',
listeners: {
tap: function (button) {
var list = button.up('list');
//结束多选
list.endSimple(list);
}
}
},
{
cls: 'moreButton',
xtype: 'button',
text: '确定',
align: 'right',
listeners: {
tap: function (button) {
var list = button.up('list');
var items = list.getSelection();
//获取选中项
var ids = [];
for (var i = 0,
item; item = items[i]; i++) {
ids.push(item.data[list.config.ckId]);
}
if (ids.length>0) {
//触发选择成功事件list:list本身,items:被选中的行,ids:被选中key集合,list.config.simpleType:自定义配置状态
list.fireEvent('simpleSuccess', list, items, ids, list.config.simpleType);
//结束多选
list.endSimple(list);
}
}
}
}]
},
listeners: {
//监控是否在多选状态
itemtap: function (list, index, target, record, e) {
//如果在多选状态停止后续事件的执行
if (this.config.isSimple) {
e.stopEvent();
}
},
//只要按键长按住就会触发,和按键是否离开没有关系
itemtaphold: function (list, index, target, record, e) {
//开始多选
this.beginSimple();
}
}
},
//获取多选边栏
getSimpleToolBar: function () {
var simpleToolBar = Ext.create('Ext.TitleBar', this.config.simpleToolBar);
return simpleToolBar;
},
//进入多选状态
beginSimple: function (simpleType, title) {
if (!this.config.isSimple) {
//取消全选
this.deselectAll();
//进入多选模式
this.setMode('SIMPLE');
//添加css
this.addCls(this.config.editCls);
//显示OnItemDisclosure
this.setOnItemDisclosure(true);
//加入标记,以便在itemtap事件中进行判定
this.config.isSimple = true;
//应对多种选择需求
if (simpleType) {
this.config.simpleType = simpleType;
} else {
this.config.simpleType = this.config.defSimpleType;
}
//改变标题
if (title) {
this.config.simpleToolBar.title = title;
} else {
this.config.simpleToolBar.title = this.config.simpleToolBar.defTitle;
}
//添加多选边栏
this.add(this.getSimpleToolBar());
}
},
//结束多选模式
endSimple: function () {
var titlebar = this.down('titlebar');
if (titlebar) {
//移除多选边栏
titlebar.hide();
titlebar.destroy();
//取消全选
this.deselectAll();
//进入单选模式
this.setMode('SINGLE');
//移除css
this.removeCls(this.config.editCls);
//隐藏OnItemDisclosure
this.setOnItemDisclosure(false);
//加入标记,以便在itemtap事件中进行判定
this.config.isSimple = false;
}
},
//更新OnItemDisclosure需要
updateOnItemDisclosure: function (newConfig, oldConfig) {
if (oldConfig == null) {
return;
}
var items = this.listItems;
for (var i = 0,
ln = items.length; i < ln; i++) {
var dItem = items[i].getDisclosure();
newConfig === false ? dItem.hide() : dItem.show();
}
}
});

需要加入的css

 .simpleList .x-list-disclosure {
-webkit-mask-size:100%;
-webkit-mask-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADwAAAA8CAYAAAA6/NlyAAAE+klEQVRoBe2aS28URxRGsY0h2FmwCQuEWLHjvUNgZAQ4PMwrEkIRIGEgySKwB8QvYIvEP+ANO0CwsJAA88wGBEKBZJUVQkJCQrwJ5nxN31Z5pnpc7e4ZT9vT0peqqanquqfurVvlIW3Dw8NTJtPTPplgxdoCnugeb3m45eEJtgJTJwJPGw8cP8V6TfmC4/Z/H9uEAAZsIdqHZiMBn2UNbvigSw8M2AIAD6PtqBPpmYe+8t1NoL9GLfYf3bTKKhiWo9PoA9KV0dUgn/tRh8tXWg/Hnj0KUB8yz1JNnjXUuhFd264A/f0O7dKXpQ7EIiTPfkKuVyvrSlx3US+KPF26cMbwxeg8Gg3W4LWHFd6rUUepQprQnI/Rh9A25AtjmqseHVkK7w59UxpgYFdg7wH0CwqFpWvyrKI23GZ7OWluwgqwOnqOobVoWh4Tm97DwCpBHUFp2TiUX3v5QVMnLQzMmqAsUVWWyta3UX/TAmOcwjjk6KmE830W7GbU0ZTAGKYEJdj3yAcQ2qYw1jmsG9e0KF8122UDw/SHwFX0EYWC+fpZGG/hPcn1sqk8jGHas+dQ6KXCB6o2g91IPfKsObZpgDGsqAT1hXdpz25A7QZqZU1gBsxFSh5zbEA9yniOU5R5PSvvCnYTSsLYtdkLTGf9uKdD/gS6gI6jPndgUXXe24OKSFAK4zsoSVA+G6uAGaC758/oBrIs+Zb6rbg9up35Xpa1jffpUqEEldezysbJ0VPLjhHADOpEfUiw2gtuUtAKDiGtYNXeqDWJ7zveYQnqM3V3nqx1s2s97xmRoLzzWqMgkLLaTVQJa0ZoJe+hXjRmaMYKVlslr2dlp5wgu4PsiTyszmg5qgVr0CqvoZW2WFlKxhV5gxJsdIMKtYH+Eew6yksoNLy0soJeFzqR+vEI9gx6h9wFzFoPSlA+25g3SlChnnUNU3grkWmxRg0n+ihBnUR5w9j2bCbPGjzzR3sgbc+6gL66TV4zkTHHEqSfZSzr+94V0mbzKUF1GkSWknG5QktGyoj7qBdVeZo2S1Ch2yUNXOMVUcEJyrcQjOeP4vzQCu9BpBtOck5T70HybN4w1iJcR7ouem9QPjhfG+On7EBPUNrKhrYLWp7+FS1FCjtdKvJ6VvM/Q9o2uWC1AHq60QB6hELh0voJ+im6iHReF+FZwe5HP/g8lrXNzuEfeeFu9C9Kg8nSrr9lBZ9ljK/v37xjL5qRFSytf3K15KXy9EH0D/JN3ui2Qj1rC5AAq4FnJvoDPUSNBnTnUy4YQF1maFHlCOAYuouJFN6PkWtEo+ryrH5sL2TPVi5UFXAMrfDegxrtae3ZfWh6paFFffYCx9BKZLtQo/a0YLXIhSUo3yKlAsfQ8vSBBkALtrCjxwdqbTWBY2glst9REee0Lw/ULUEZpFuOChxD1yuRybNbUV0SlAtq9SDgGFp7ushEJlhdKuqWoAzSLYOBHeidGPkc+cIztE2wA6iuCcoFtXom4Bha4f0nGmv2FqyOnoaFscFG9rsfQusYq0T2G8qayASrbdEdOlfR/TJ72AzAaHla5/QD9BnVCucvfK/fjZXtx8WzZneu/+WBf53XOb0G6XetHjQXyfv2vKLyH7qLLqMhJn5DOW5PLmBZDfRUilloGUoD/ovvXgIrT4/rkxt4XK0fw+TtYxhT6iEt4FK7L8D4locDFqnUXSadh78Bx5bEl2CLG+8AAAAASUVORK5CYII=);
background-color:#ddd;
background-image:none;
}
.simpleList .x-item-selected .x-list-disclosure {
background-color:#006bb6;
}

使用示例js

 Ext.define('app.view.new.List', {
alternateClassName: 'newList',
extend: 'ux.SimpleList',
requires: ['app.view.new.Info'],
xtype: 'newList',
config: {
store: 'newList',
cls: 'list', //自定义css
itemTpl: new Ext.XTemplate('<div class="left w20"><div class="img" style="background: url({litpic}) no-repeat center;background-size: 100%;"></div></div>', '<div class="right w80"><div class="row">{title}</div><div class="row grayF">{time}</div></div>')
}
});

控制器js

 /*
*新闻类
*/
Ext.define('app.controller.New', {
extend: 'Ext.app.Controller',
config: {
models: ['New'],
stores: ['NewList'],
views: ['new.List'],
refs: {
newList: 'newList'
},
control: {
//新闻列表
newList: {
initialize: function (list) {
MyUtil.showListByParams('newList', MyUtil.newParams, MyUtil.isNewLoad);
},
//itemtap事件被用来处理检测是否在编辑状态,所以这里使用itemsingletap而不能使用itemtap
itemsingletap: function (list, index, target, record, e) {
this.redirectTo('newInfo');
MyUtil.showInfo(record, 'newInfo', 'NewInfo.ashx', 'body', {
id: record.data.id
});
},
//结束多选事件触发
simpleSuccess: function (list, items, ids, type) {
console.log(ids);
}
}
}
}
});

效果:

  单击  

长按

确定后触发simpleSuccess事件,输出ids

sencha touch list 批量选择扩展(2013-7-29)的更多相关文章

  1. sencha touch tabsidebar 源码扩展

    先上图看效果 没错,这是一个sencha touch 项目,而这里的右边推出效果(下文叫做tabsiderbar),使用插件tabsiderbar来扩展的. 插件js下载地址:http://www.m ...

  2. sencha touch 分享到微博扩展

    扩展代码: /* *分享到微博 */ Ext.define('ux.WeiboPicker', { extend: 'Ext.Picker', xtype: 'weiboPicker', config ...

  3. 第一步 使用sencha touch cmd 4.0 创建项目、打包(加入全局变量、公用类、自定义扩展、资源文件)

    参考资料: http://www.cnblogs.com/qqloving/archive/2013/04/25/3043606.html http://www.admin10000.com/docu ...

  4. 选择移动web开发框架研究——有mui、frozenui以及Sencha Touch等

    纯粹的总结一下移动web开发框架,移动 web开发框架有jQuery Mobile .Sencha Touch等等,他们都来源于web开发,是成熟的框架,jQuery Mobile出自于jQuery家 ...

  5. sencha touch 扩展篇之将sencha touch打包成安装程序(下)- 使用phonegap打包安装程序

        这讲我们来讲解下如何使用phonegapa创建项目环境并通过她们将sencha touch打包成app,这里我们只讲解打包android的apk,打包ios的过程有点类似,但是需要在mac环境 ...

  6. sencha touch 扩展篇之将sencha touch打包成安装程序(上)- 使用sencha cmd打包安装程序

    由于最近一直忙着android原生的开发,很久没有更新博客了,官方的sencha cmd工具功能非常强大,创建项目,压缩项目,打包安装程序都能轻松实现,这讲我们就给大家介绍下如何使用sencha cm ...

  7. sencha touch 扩展篇之使用sass自定义主题样式 (下)通过css修改官方组件样式以及自定义图标

    上一讲我们讲解了如何使用官方的api来修改主题样式,这讲我们继续讲解sass的样式修改, 编译官方自带的主题包  在生成的项目以及官方sdk的目录下,自带了一些主题sass包,我们也可以通过修改sas ...

  8. sencha touch 扩展篇之使用sass自定义主题样式 (上)使用官方的api修改主题样式

    大家知道,sencha touch是通过我们写的js代码来动态渲染单页面生成一个个div+css的html页面来模拟app应用,那么既然是div+css结构的,我们就可以通过修改css样式来自定义我们 ...

  9. sencha touch 入门系列 扩展篇之sencha touch 项目打包压缩

    经常有新手同学抱怨说sencha touch的项目加载速度为什么这么慢,经常要10秒左右的时间甚至更多, 大家都知道,sencha touch开发的项目中引用了大量的js文件,当我们打开项目时,st的 ...

随机推荐

  1. PHP数组排序函数array_multisort()函数详解(二)

    array_multisort()这个函数可以对多个PHP数组进行排序,排序结果是所有的数组都按第一个数组的顺序进行排列 例如array_multisort($a,$b),$a,$b是两个数组,如果排 ...

  2. 有术:DIY代理服务器

    FQ有术:DIY代理服务器 公司HTTP代理穿透+手機ShadowSocks+SSH翻牆 利用SSH代理爬墙 http://bestvpnchina.net/

  3. java多线程入门学习(一)

    java多线程入门学习(一) 一.java多线程之前 进程:每一个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销.一个进程包括1--n个线程.     线程:同一类线程共享代码 ...

  4. HttpURLConnection和HttpClient的区别2(转)

    1.HttpClient比HttpURLConnection功能更强大,但是做java建议用前者,安卓建议用后者 2.这两者都支持HTTPS,streaming 上传与下载,配置超时时间,IPv6,  ...

  5. [转]CentOS虚拟机如何设置共享文件夹,并在Windows下映射网络驱动器?

    CentOS虚拟机如何设置共享文件夹,并在Windows下映射网络驱动器? 转自这里 一.为什么要这么做? 最近在做Linux下的软件开发,但又想使用Windows下的编程工具“Source Insi ...

  6. CentOS6.5下安装iRedMail中需要解决的问题

    iRedMail是个专门用于Redhat/CentOS下的企业Mail服务集成安装软件包,本来只要有干净的系统就可以轻松安装,无奈国内网络状况和墙头众多,安装中也有很多问题需要解决,下面记录的都是我安 ...

  7. UNIX环境编程学习笔记(12)——文件I/O之目录操作

    lienhua342014-09-18 1 引言 在 UNIX 系统中,目录是一种特殊的文件类型.我们可以使用 open 函数来打开目录,获取文件描述符,然后调用 stat 函数来获取目录的属性信息, ...

  8. 小程序实现textarea随输入的文字行数变化高度自动增加

    参考链接:https://blog.csdn.net/liuwengai/article/details/78987957 该实现方法是根据上面的链接改编为小程序的实现,代码如下: wxml: < ...

  9. IT建设如何面对“短板”和“孤峰”?

    在与很多企业探讨信息化建设时,很多IT负责人都提出过一个问题,企业信息化建设的资源是有限的,信息化的资源是先强化企业的“孤峰”还是先支持“短板”?   企 业虽说是一个整体,但不同的领域如研发.生产. ...

  10. goquery 文档

    https://www.itlipeng.cn/2017/04/25/goquery-%E6%96%87%E6%A1%A3/ http://blog.studygolang.com/2015/04/g ...