登录
注册
关于我们
简体中文
ENGLISH
搜索
购物车
0 ITEMS ON YOUR CART
首页
动态
方案
案例
专栏
期刊
联系我们
首页
期刊
[Ext JS 7] 关联(Association)
Ext JS开发大全
第1章 Ext JS快速入门示例[4/4]
第12章[12.10]富文本编辑器 CKEditor与Ext JS的整合
第12章[12.10.1] Ext JS + CKEditor+Spring Boot 实现编辑器图片上传
第11章[11.6] Ext JS 自行搭建远端库的包升级版本后找不到的问题解决
[Ext JS 4] 实战之Grid, Tree Gird编辑
ext命令集
第12章[12.3] Ext JSGrid中的超链接列及其功能实现
[Ext JS]textfield添加compositionstart、compositionupdate 和compositionend _os
[Ext JS ] 动添切换字段的必填与非必填
3.1 Ext JS 组件总览
[Ext JS] Grid表格批量编辑的实现
Ext JS 快速开发工具
带触发器按钮的输入框
Ext JS的布尔对象类型处理及便捷方法
Ext JS的Object类型处理及便捷方法
ExtJS RadioGroup(单选按钮组) 使用及注意事项
Ext JS 模拟后端数据实现
ToolTip 实现全介绍
Ext JS下拉单选框(Combobox,TagFied)使用及疑难问题解决
Ext JS应用测试概览
Sencha Studio 监视工具( Inspect Tool)
Ext JS 4 升级指南
Ext JS 如何定义公用方法(单例类 or 静态方法)
Ext JS的模块化开发(Package)
Ext3 -- Form 实例。 用来migrate file 数据到DB用的
ExtJS 3 在Tab下加入Form 实例
Extjs Grid 中给已经添加过Filter的列增加标识
Extjs 实战之 Ext.tree.TreePanel Tree无法显示
Extjs弹出框的异步执行
Grid 动态该表列( reconfigure)的性能改善
Spring Boot Ext JS准前后端框架应用的会话(Session)处理
[Ext JS 4] Extjs 图表 Legend(图例)的分行与分列显示
[Ext JS 4] Extjs 之 initComponent 和 constructor的区别
[Ext JS 4] Grid 中的单元格添加Tooltip 的效果
[Ext JS 4] Grid 实战之分页功能
[Ext JS 4] Grid 组件
[Ext JS 4] MVC 应用程序框架
[Ext JS 4] MVC 应用程序框架
发布 [Ext JS 4] contentEL,renderTo, applyTo 释义与区别
[Ext JS 4] 动态加载
[Ext JS 4] 实战之 ComboBox 和 DateField (消失之解决办法)
[Ext JS 4] 实战之 Picker 和 Picker Field
[Ext JS 4] 实战之 带week(星期)的日期选择控件(二)
[Ext JS 4] 实战之 ComboBox 和 DateField 的点击事件在IE下失效
## [Ext JS 4] 实战之 带week(星期)的日期选择控件(三)
[Ext JS 4] 实战之 带week(星期)的日期选择控件
[Ext JS 4] 实战之Chart 坐标控制(单坐标,双坐标)
[Ext JS 4] 实战之Chart, Column Chart 定制颜色
[Ext JS 4] 实战之Grid, Tree Gird 动态添加列
[Ext JS 4] 实战之Grid, Tree Gird 动态添加列续(性能考虑)
[Ext JS 4] 实战之Grid, Tree Gird 动态添加行
[Ext JS 4] 实战之Grid, Tree Gird 添加按钮列
[Ext JS 4] 实战之Grid, Tree Gird编辑Cell
[Ext JS 4] 实战之Load Mask - 在Grid Reconfigure的使用状况
[Ext JS 4] 实战之Load Mask(加载遮罩)的显示与隐藏
[Ext JS 4] 实战之多选下拉单 (带checkbox) 续 - 带ALL 选项
[Ext JS 4] 实战之多选下拉单 (带checkbox)
[Ext JS 4] 实战之升级系列一[Ext jS 3-->Ext JS 4]
[Ext JS 4] 实战之将chart导出为png, jpg 格式的文件
[Ext JS 4] 实战之浏览器兼容
[Ext JS 4] 布局之实战二 - 中间区块不会自动伸展 (tab)续
[Ext JS 4] 组件之图表
[Ext JS 4]后台自动产生图档
[Ext JS 4]性能优化
[Ext JS 7 ]7.5 自适应配置 - Responsive Configs
[Ext JS 7] 关联(Association)
[Ext JS 7]事件(Event)
[Ext JS 7]ClassRequire错误解决
[Ext JS 7]的开发模式
[Ext JS 7]基于NPM的开发
[Ext JS ] 动添切换字段的必填与非必填
[Ext JS4] 数据包
[Ext JS4系列]Ext JS4 入门
[Ext JS6] Grid不同列的关联编辑
[Ext JS6] ViewControllers-视图控制器
[Ext JS6]Ext.Template
[Ext JS6]Sencha Cmd
[Ext JS6]编码规范
[Ext JS6]多类型设备开发
[Ext JS6]工作区-Workspace
[Ext JS6]路由(Routing)及使用
[Ext JS6]视图模型和数据绑定
[Ext JS6实战] Ajax获取Tree Store
[Ext JS6实战] Ext.XTemplate
[Ext JS6实战]动态数据绑定
[Ext JS] Sencha Cmd命令参考之二
[Ext JS] Sencha Cmd命令参考之一
[Ext JS] Group Grid-分组网格
[Ext JS] Group Grid-分组网格
[Ext JS]嵌套Grid的实现及注意事项
[Ext JS]SimXhr.js__dc=1659315492151_65 Uncaught TypeError问题分析与解决
[Ext JS]Sencha Studio安装与快速介绍之一
[Ext JS]textfield 添加 compositionstart、compositionupdate 和 compositionend
[Ext JS]图片显示方式
[ExtJS 6]Grid分页工具栏无效问题解决
[ExtJS6]ResponsiveColumn-自适应列布局
[Extjs 4] 类系统
基于Ext JS的模块化应用框架搭建及开发
[Ext JS] 自行搭建远端库的包升级版本后找不到的问题解决-The following versions are available
[Ext JS]鼠标移入移除时弹出和关闭窗口
[Ext JS]富文本编辑器 CKEditor与Ext JS的整合
[Ext JS]可编辑列Grid的全场景开发
['Ext JS]Grid中的超链接列及其功能实现
[Ext JS]Ext JS + CKEditor+Spring Boot 实现编辑器图片上传
[Ext JS]介绍与快速入门1
[Ext JS]实现带动态数字的图标
Spring Boot+Ext JS 实现图形验证码
Ext JS介绍与快速入门2
Ext JS开发基本环境准备与项目创建
[Ext JS]开发模式及快速测试方式
[Ext JS]多类型终端-电脑、移动端(手机、平板)
[Ext JS]基于Ext JS的MVC/MVVM架构的应用开发模式
[Ext JS]Ext JS的类与类体系
[Ext JS]Ext JS组件、容器与布局
[Ext JS]组件与容器的选择与开发
[Ext JS]Ext JS数据模型与数据封装
[Ext JS]Ext JS的控制器类型及使用
[Ext JS]说透Ext JS的窗口及对话框用法
[Ext JS]说透Ext JS的窗口及对话框用法
[Ext js]Grid行选择的多种场景和实现方式
[Ext JS]Ext JS类的继承与混合
CmsWing
[Ext JS 7] 关联(Association)
## [Ext JS 7] 关联(Association) ### 关联(Association)的概念与示例 Association用于描述不同模型类之间的关联。 比如有如下关系: ![](/upload/picture/2022-09-30/upload_ab004ce577e4ae8b4cf4e2028d03e4cc.png) [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fTwUxzit-1590073083528)(images/screenshot_1590071454442.png)] 如果后端返回以下格式的JSON数据, 前端如何定义关联模型呢? ```javascript var datas = [ { "id": 1, "name": "蜀", "generals": [ { "id": 101, "name": "刘备" },{ "id": 102, "name": "关羽" } ] }] ``` ### 关联模型类定义 ```javascript //王国类 Ext.define('Kingdom', { extend: 'Ext.data.Model', fields: ['id', 'name'] }); //将军类 Ext.define('General', { extend: 'Ext.data.Model', fields: ['id', 'name', {name: 'kingdomId', reference: 'Kingdom' //关联 }] }); ``` 关键: 在General类中,多定义一个栏位kingdomId,使用reference指定关联的其他的类名。(此处是实现关联的定义方式的一种) 使用内存类型的Store测试关联 ```javascript var kingdomStore = new Ext.data.Store({ model: 'Kingdom', data: datas, autoLoad: true, proxy: { type: 'memory', reader: { type: 'json' } } }); var firstKingdom = kingdomStore.first(); //获取Store的第一个记录 console.log(firstKingdom.get("name")); //控制台打印 var generalStore = firstKingdom.generals(); //generals(), 自动产生的方法, 获取关联的Store var firstGeneral = generalStore.first(); //关联Store的第一个记录 console.log(generalStore.getCount()+":"+firstGeneral.get("name")); // ``` ### 注意: 为演示方便,这里使用memory类型的代理获取内联的数据,这里必须要设置proxy,否则取不到关联的数据。 .generals() 是框架自动产生的方法, 用户获取关联的数据,返回的类型是Store, 可以通过Store相关的方法获取关联数据。 关联相关的框架类 关联(Association)相关的类的定义是在Ext.data.schema包中,比如 Ext.data.schema.Association,关于Schema的介绍参加第7章。 关联类不单独使用,而是通过Ext.data.Model进行构造。关联相关的类包括: Ext.data.schema.Association Ext.data.schema.ManyToOne Ext.data.schema.HasMany Ext.data.schema.OneToOne Ext.data.schema.HasOne Ext.data.schema.ManyToMany 关联的实现方式 ### 按键关联 定义: 使用模型的某个字段关联另外一个模型的id。 适用: 关系型数据库 用法: 在模型字段定义中使用reference配置。 ### 无键关联 定义:通过数据的层级结构决定关系。 适用: 常用于NoSQL数据库中 用法: 使用模型的HasOne、HasMany和ManyToMany定义另外一个模型类。 ### 关联的类型 根据关联双方的关联维度,关联分为: 多对一 Many To One 比如很多将军属于某一个王国。 定义方式: 按键关联: 使用Ext.data.schema.ManyToOne 无键关联:Ext.data.schema.HasMany 一对一 One To One 比如王国和都城的对应关系, 一对一关系更常使用在数据分片上,比如新定义一个KingdomInfo类,作为Kingdom类的补充。 按键关联: 使用 Ext.data.schema.OneToOne 无键关联:使用Ext.data.schema.HasOne 多对多 Many To Many 实例: 将军和战役的关联,一个将军会参加很多场战役,一场战役参战的将军也有多个。 使用 Ext.data.schema.ManyToMany,除非与Ext.data.Session一起使用,否则多对多关系是只读的。 ### 关联的优势 Assocations 可以使共享同一个连接的多个模型变得容易处理具体包括: 自动产生取值和设值的方法 针对上面的示例: 自动产生generals(将军) 返回Store类型 产生getKingdom 和 setKingdom方法, 参数类型是Kingdom的模型类实例。 嵌套加载 在同一个请求中从远端数据源获取层级的关联数据。 绑定 {kingdom.general} {kingdom.general.name} ### 关联中的概念 Roles 角色 角色用于确定关联的生成名字,默认通过字段名(在按键关联中)或是模型名产生。该命名遵循Ext.data.schema.Namer定义的模式。 要更改特定实例,可以显式指定: 自动产生的方法 store gettter/setter 反身 Reflexive 定义了一方,另一方自动产生
网站导航
首页
动态
方案
案例
专栏
期刊
联系我们