//求职
Ext.define('app.model.Staff', {
extend: 'Ext.data.Model',
config: {
fields: [{
name: 'id',
type: 'int'
},
{
//用户id
name: 'uid',
type: 'int'
},
{
//姓名
name: 'fullname',
type: 'string',
convert: function (v, record) {
var display = record.data.display_name;
if (display == 1) {
return v;
} else if (display == 2) {
return 'N' + record.data.id;
}
return v.substring(0, 1) + '**';
}
},
{
//年龄
name: 'birthdate',
type: 'int',
convert: function (v, record) {
var time = new Date().getFullYear();
return time - v;
}
},
{
//姓隐藏程度
name: 'display_name',
type: 'string'
},
{
//全职兼职
name: 'nature_cn',
type: 'string'
},
{
//标签
name: 'tag',
type: 'string',
convert: function (v, record) {
if (!v) {
return '';
}
var taglist = v.split('|');
var tag = [];
for (var i in taglist) {
var j = {
title: taglist[i].split(',')[1]
};
tag.push(j);
}
return tag;
}
},
{
//学历
name: 'education_cn',
type: 'string'
},
{
//工作经验
name: 'experience_cn',
type: 'string',
convert: function (v, record) {
return v != "无经验" ? v + '经验' : v;
}
},
{
//性别
name: 'sex_cn',
type: 'string'
},
{
//地址
name: 'householdaddress',
type: 'string'
},
{
//刷新时间
name: 'refreshtime',
type: 'string'
},
{
//期望岗位
name: 'intention_jobs',
type: 'string'
}]
}
});

值得注意的是convert方法,有两个参数其中v是当前字段的值,record则是整个model的值
可以根据需求来二次加工数据,比如说后台返回的值是0,1而你希望他显示的值是男,女这种情况

下面再说说store

代码如下:

Ext.define('app.store.StaffList', {
extend: 'Ext.data.Store',
config: {
model: 'app.model.Staff',//对应的数据模型,只有模型中已经定义的字段才能存储到store中,没有定义的字段是不是存储的
storeId: 'staffList', //给他一个id,以便于list中指定store。以及通过Ext.getStore(id)来得到store
autoLoad: false,//在index页面启动时不自动加载数据
pageSize: 7, //想后台传递一个参数pageSize值为7,这里的意思是告诉后台每页显示7条数据,用于分页。
//还有一个参数limit,用来告诉后台当前显示第几页。
proxy: {
type: 'jsonp',//向后台读取数据的方式,可以是jsonp或者ajax
url: MyUtil.postUrl + StaffList.ashx',//请求数据的地址
reader: {
type: "json",//返回数据的格式
rootProperty: 'result',//返回数据的根节点
totalProperty: 'totalCounts'//数据总数,后台不给也没事。不过这样就没办法确定是不是最后一页了
}
}
}
});

需要注意的是,pageSize的作用并不是指在list中每次显示多少条数据,而是告诉后台你每次要显示多少条数据,你要7条后台给你10条也是可以的,给你10条list就会显示10条数据上去

就像小学生问妈妈要零用钱,小学生问妈妈要5块,妈妈心情好了给10块也是可以的,心情不好一块也不给。不管给多少,小学生都得乖乖的把钱放到兜兜里面。

对于list可以做一个小小的扩展

/*
*自定义列表页面
*/
Ext.define('app.view.util.MyList', {
alternateClassName: 'myList',
extend: 'Ext.List',
xtype: 'myList',
requires: ['Ext.plugin.ListPaging', 'Ext.plugin.PullRefresh'],
config: {
cls: 'list',//自定义css
plugins: [{
xclass: 'Ext.plugin.ListPaging',//分页插件
autoPaging: true,//滚动到最底部时是否自动加载下一页数据
noMoreRecordsText: '没有更多内容了',
loadMoreText: '加载更多...'//加载更多按钮显示内容
},
{
xclass: 'Ext.plugin.PullRefresh',//下拉刷新插件
lastUpdatedText: '上次刷新时间:',
loadingText: '加载中...',
pullRefreshText: '下拉可以手动刷新',
releaseRefreshText: '松开可以刷新',
refreshFn: function (loaded, arguments) {//开始刷新触发的时间,默认效果是只刷新第一页数据。不管后面显示了多少数据
loaded.getList().getStore().loadPage(1);//这里进行了处理,触发时清空所有数据,重新加载第一页数据。
}
}],
loadingText: false, //禁用加载遮罩,防止跳转时页面卡顿,使用统一的遮罩效果
emptyText: '没有更多内容了'
}
});

一个list这样就可以了

Ext.define('app.view.job.StaffList', {
alternateClassName: 'staffList',
extend: 'app.view.util.MyList',
requires: ['app.view.job.StaffInfo'],
xtype: 'staffList',
config: {
itemHeight:68,
store: 'staffList',
itemTpl: new Ext.XTemplate(
'<div class="left">',
'<div class="row">{fullname}</div><div class="row sm grayF">{education_cn} - {experience_cn} - {nature_cn}</div><div class="row sm grayF">{sex_cn} - {householdaddress}</div>',
'</div>',
'<div class="right"><div class="row grayF">{refreshtime}</div><div class="row sm orangeF">{intention_jobs}</div></div>')
}
});

大概就是这样吧,附图一张

转自:http://www.cnblogs.com/mlzs/p/3169893.html

sencha touch list(列表)、 store(数据源)、model(模型)详解的更多相关文章

  1. ASP.NET Core的配置(2):配置模型详解

    在上面一章我们以实例演示的方式介绍了几种读取配置的几种方式,其中涉及到三个重要的对象,它们分别是承载结构化配置信息的Configuration,提供原始配置源数据的ConfigurationProvi ...

  2. <转>ASP.NET学习笔记之MVC 3 数据验证 Model Validation 详解

    MVC 3 数据验证 Model Validation 详解  再附加一些比较好的验证详解:(以下均为引用) 1.asp.net mvc3 的数据验证(一) - zhangkai2237 - 博客园 ...

  3. 云时代架构阅读笔记六——Java内存模型详解(二)

    承接上文:云时代架构阅读笔记五——Java内存模型详解(一) 原子性.可见性.有序性 Java内存模型围绕着并发过程中如何处理原子性.可见性和有序性这三个特征来建立的,来逐个看一下: 1.原子性(At ...

  4. css 06-CSS盒模型详解

    06-CSS盒模型详解 #盒子模型 #前言 盒子模型,英文即box model.无论是div.span.还是a都是盒子. 但是,图片.表单元素一律看作是文本,它们并不是盒子.这个很好理解,比如说,一张 ...

  5. ISO七层模型详解

    ISO七层模型详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在我刚刚接触运维这个行业的时候,去面试时总是会做一些面试题,笔试题就是看一个运维工程师的专业技能的掌握情况,这个很 ...

  6. 28、vSocket模型详解及select应用详解

    在上片文章已经讲过了TCP协议的基本结构和构成并举例,也粗略的讲过了SOCKET,但是讲解的并不完善,这里详细讲解下关于SOCKET的编程的I/O复用函数. 1.I/O复用:selec函数 在介绍so ...

  7. 第94天:CSS3 盒模型详解

    CSS3盒模型详解 盒模型设定为border-box时 width = border + padding + content 盒模型设定为content-box时 width = content所谓定 ...

  8. JVM的类加载过程以及双亲委派模型详解

    JVM的类加载过程以及双亲委派模型详解 这篇文章主要介绍了JVM的类加载过程以及双亲委派模型详解,类加载器就是根据指定全限定名称将 class 文件加载到 JVM 内存,然后再转化为 class 对象 ...

  9. 图解机器学习 | LightGBM模型详解

    作者:韩信子@ShowMeAI 教程地址:http://www.showmeai.tech/tutorials/34 本文地址:http://www.showmeai.tech/article-det ...

随机推荐

  1. 移动Web 开发中的一些前端知识收集汇总

    在开发DeveMobile 与EaseMobile 主题 的时候积累了一些移动Web 开发的前端知识,本着记录总结的目的,特写这篇文章备忘一下. 要说移动Web 开发与传统的PC 端开发,感觉也没什么 ...

  2. 本地环境,Ecshop安装教程

    最近有个项目需要用ECshop来做,之前没接触过ECshop,今天去网上找了下安装教程,现在发出来分享一下. 1. ecshop网店系统最新版本是ECSHOP V2.7.3,去官网下载utf8和gbk ...

  3. opencv3中的机器学习算法之:EM算法

    不同于其它的机器学习模型,EM算法是一种非监督的学习算法,它的输入数据事先不需要进行标注.相反,该算法从给定的样本集中,能计算出高斯混和参数的最大似然估计.也能得到每个样本对应的标注值,类似于kmea ...

  4. Tomcat简易安装指南

    由于要学习activiti的使用,而activiti依赖于tomcat,所以下载了一个tomcat 7 的binary包,然后按照running.TXT中的描述来手动安装,下文主要是记录了在阅读run ...

  5. Jenkins进阶系列之——09配置Linux系统ssh免密码登陆

    ssh认证的完整描述:https://www.ibm.com/developerworks/cn/linux/security/openssh/part1/ 说明:点我去查看 今天我们只说生成ssh的 ...

  6. Pjax.js防刷新技术

    自我感觉良好,所以拿出现在自己用的 Pjax.js 分享给大家 当然 这个版本是 经过本人修改后的版本,跟其它 拿过来就用的 不一样 而且区别还不小 大多的 Pjax 都是 跟后台无关的,而这个版本是 ...

  7. this,this,再次讨论javascript中的this,超全面

    至于js中this这个东西,好多淫解释过了,看起来好高端的样子,不造你看懂了木有? 先引用比较高端的,“汤姆大叔“ 的,yes this 好了,下面加上鄙人比较挫的解释 论点: this 不是变量,不 ...

  8. (旧)子数涵数·PS ——素描效果

    一.准备素材(均为在百度上下载的) 二.打开ps,并在ps中打开第一张素材 三.复制图层(好习惯) 四.去色将图像变成黑白,图像->调整->去色,快捷键为Ctrl+Shift+U 五,复制 ...

  9. OpenGLES 2.0 可编程渲染管线

    OpenGL ES 2.0 与 OpenGL ES 1.x 渲染管线的最大区别就是: 顶点着色器.片元着色器是可编程的,替代了原来的固定管线的很多功能.

  10. word删除水平线(分割线)的方法(原创)

    在word里面,有时候我们会输入3个“-”或者“=”等符合,然后一个回车,生成了一条水平线(分割线). 研究了很久,今天终于发现删除它的方法了. 选中文本,点“格式”,选中“边框和底线”,点第一个子页 ...