来自《sencha touch权威指南》第11章,323页开始

---------------------------------------------------

index.html代码:

<!DOCTYPE HTML>
<html>
<head>
<meta charset="utf-8">
<title>sencha touch</title>
<link rel="stylesheet" type="text/css" href="css/sencha-touch.css" />
<script type="text/javascript" src="sencha-touch-debug.js"></script>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script>
<script type="text/javascript" src="app.js"></script>
<style type="text/css">
h3{background: blue;font-size: 14px;color:black;font-weight: bold;width:180px;border: solid 1px blue;background-color: skyblue;border-radius:20px;padding: 5px;}
.listHeader{display: -webkit-box;-webkit-box-orient: horicontal;}
.title{font-size: 14px;color: #FFF;text-align: center;background-color: #7088ab;width: 25%;}
.students div{width: 25%;text-align: center;border: solid 1px #ccc;float: left;}
.class{clear:left;}
</style>
</head>
<body> </body>
</html>

app.js代码:

Ext.require(['Ext.DataView','Ext.TitleBar','Ext.Toolbar','Ext.Panel']);
Ext.application({
name: 'MyApp',
icon: 'images/icon.png',
glossOnIcon: false,
phoneStartupScreen: 'images/phone_startup.png',
tabletStartupScreen: 'images/tablet_startup.png', launch: function(){
Ext.define('Class',{
extend: 'Ext.data.Model',
config: {
fields: ['id','name','studentCount'],
hasMany:{
model: 'Student',name: 'students'
},
proxy:{
type: 'ajax', url: 'students.json'
}
}
}); Ext.define('Student',{
extend: 'Ext.data.Model',
config: {
fields: ['number','name','age','phone']
}
}); var template = new Ext.XTemplate(
'<div class="class"><h3>{name}(学生人数:{studentCount})</h3>',
'<div class="listHeader">',
'<div class="title">姓名</div>',
'<div class="title">学号</div>',
'<div class="title">年龄</div>',
'<div class="title">电话</div>',
'</div>',
'<tpl for="students">',
'<div class="students">',
'<div id="name">{name}</div>',
'<div>{number}</div>',
'<div>{age}</div>',
'<div>{phone}</div>',
'</div></tpl></div>'
); var titlebar = Ext.create('Ext.TitleBar',{
docked: 'top',
title: '北京大学'
}); var dataview = Ext.create('Ext.DataView',{
items: titlebar,
itemTpl: template,
selectedCls: 'selected',
store: new Ext.data.Store({
model: 'Class',
autoLoad: true
})
}); Ext.Viewport.add(dataview);
}
});

students.json代码:

[
{
"id": 1,
"name": "2002级1班",
"studentCount":3,
"students":[
{"number":"0802123","name":"张三","age":30,"phone":"0102222"},
{"number":"0802124","name":"梁二","age":30,"phone":"0102233"},
{"number":"0802128","name":"陈八","age":30,"phone":"0102255"}
]
},
{
"id": 2,
"name": "2002级2班",
"studentCount":2,
"students":[
{"number":"0803111","name":"张三","age":20,"phone":"0202222"},
{"number":"0803222","name":"梁二","age":20,"phone":"0202233"}
]
}
]

显示结果:

Ext.data.association.hasMany一对多模型使用示例的更多相关文章

  1. ExtJS笔记 Ext.data.Model

    A Model represents some object that your application manages. For example, one might define a Model ...

  2. ExtJS笔记 Ext.data.Types

    This is a static class containing the system-supplied data types which may be given to a Field. Type ...

  3. 多目标跟踪笔记三:Global Data Association for Multi-Object Tracking Using Network Flows

    Abstract 针对用于多目标跟踪的数据关联(data association),本文提出了一种基于网络流(network flow)的优化方法.将最大后验概率(maximum-a-posterio ...

  4. A Hybrid Data Association Framework for Robust Online Multi-Object Tracking(2017 IEEE Transactions on Image Processing)

    A Hybrid Data Association Framework for Robust Online Multi-Object Tracking 一种用于鲁棒在线多目标跟踪的混合数据关联框架 摘 ...

  5. Ext.data.SimpleStore的使用方法

    Ext.data.SimpleStore简单数据存储器 参数:data:Array数组类型.fields:数组对应的字段名称.var data1=[1,"订单1","16 ...

  6. Ext.data.Store动态修改url

    store.proxy = new Ext.data.HttpProxy({url:path}); 示例: var ad_store = new Ext.data.JsonStore({ fields ...

  7. 设置 Ext.data.Store 传参的请求方式

    设置 Ext.data.Store 传参的请求方式 1.extjs 给怎么给panel设背景色 设置bodyStyle:'background:#ffc;padding:10px;', var res ...

  8. Ext.data.Store添加动态参数

    多条件查询页面的参数都是动态的,并且我们通常还会有默认加载页面.此时,动态添加参数非常重要,其中baseparam是解决问题的关键. @ 将查询条件定义为一个全局变量 var param_01 = & ...

  9. 转: Ext.data.Store 修改Post请求

    Extjs 4.0版本 var Store = Ext.create('Ext.data.Store', { pageSize: pageSize, model: 'Ext.data.Model名称' ...

随机推荐

  1. 安卓笔记-adb指令、打包安装

    adb install -r -s xxx.apk      -r重装  -s 安装到sd卡 安装软件 adb uninstall -k 包名           -k 只卸载程序不清除数据 adb ...

  2. JAVA多线程三种实现方式

    JAVA多线程实现方式主要有三种:继承Thread类.实现Runnable接口.使用ExecutorService.Callable.Future实现有返回结果的多线程.其中前两种方式线程执行完后都没 ...

  3. github打不开问题

    修改host 185.31.17.184 github.global.ssl.fastly.net 207.97.227.239 http://github.com 65.74.177.129 htt ...

  4. POJ 3684 Physics Experiment(弹性碰撞)

    Physics Experiment Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 2936   Accepted: 104 ...

  5. APP推送通知相关实现

      关于推送通知,iOS推送主要是通过服务端来实现的,相关过程可以参考下面两篇文章:   http://cshbbrain.iteye.com/blog/1859810   http://zxs198 ...

  6. 十三 Thread的一些常用方法

    setName() : 给线程起名字. isAlive() : 线程是否存或. currentThread() : 取得当前线程. getId() : 取得线程的唯一标识.

  7. java之IO整理(下)

    一:对象的序列化 对象序列化就是把一个对象变为二进制数据流的一种方法. 一个类要想被序列化,就行必须实现java.io.Serializable接口.虽然这个接口中没有任何方法,就如同之前的clone ...

  8. Python - 第一个 Django 项目

    Django 的安装: pip3 install django==1.11.11 pip3 install -i https://pypi.tuna.tsinghua.edu.cn/simple/ d ...

  9. ceph中用sgdisk工具进行分区--------固定uuid

    ceph中两种类型分区的type code: type type code journal 45b0969e-9b03-4f30-b4c6-b4b80ceff106 osd 4fbd7e29-9d25 ...

  10. [转] C#-using用法详解

    转载自 WanderOCN的文章 C#-using用法详解 using 关键字有两个主要用途: (一).作为指令,用于为命名空间创建别名或导入其他命名空间中定义的类型. (二).作为语句,用于定义一个 ...