Ext JS 6学习文档-第6章-高级组件

Ext JS 6学习文档-第6章-高级组件

高级组件

本章涵盖了高级组件,比如 tree 和 data view。它将为读者呈现一个示例项目为 图片浏览器,它使用 tree 和 data view 组件。以下是本章将要讨论的主题:

  • Trees
  • Data views
  • 拖放
  • 图片浏览器 — 一个示例项目

本章的主要目标是探索 tree panel 和 data view 并且使用他们来构建一个示例项目图片浏览器。图片浏览器的最终展示效果如下图。

这个项目中的最重要的组件是 tree panel 和 data view 。本项目中使用的组件和概念有:

  • tree panel
  • Data views
  • Model
  • store 和 rest 代理
  • 容器和布局
  • 引用
  • 事件处理
  • 过滤
 

除了 tree panel 和 data view 你已经在之前的章节中学习了所有的我们目前已用到的知识。所以在本章中,我们首先学习 tree panel 和 data view。

1

 

tree panel

这在 ExtJS 中是一个非常强大且常用的组件,你可以使用它构建任意类型的树。一个 tree panel 是一个树形结构的具有层次化数据的UI。

它和 Ext.grid.Panel 相似, Ext.tree.Panel 也继承自Ext.panel.Table 。所以,它也是支持多列的。

和 grid panel 不同的是,tree panel 需要一个 tree store (Ext.Store.TreeStore)。 tree store 具有一些 tree panel 的功能所需使用的特殊的属性。

 

基本的 tree

我们来用一个简单的例子演示。tree panel 至少需要一个 tree store 来提供数据。我们首先来创建 tree store 并硬编码内置数据:

 

接着继续创建 Ext.tree.Panel 

 

下列截图为以上代码的输出结果:

1

现在,我们创建一个高级点的树,它是可以拖拽的。同时还需要用到 tree panel 和 tree store 的一些额外选项。拖拽只需要添加一个插件叫做treeviewdragdrop 。如以下代码所示:

 

 

如以下截图所示的输出。我把节点  South America 拖拽至  Asia 节点之下:

1

tree grid

你可以将多个列添加到 tree ,同时也能创建 tree grid 。默认 tree 包含一列,用的是 tree store 中节点的文本字段。

在这个 store 中,你可以看到在每个节点上除了节点名称,还添加了一些其他的字段,这些字段用于在 tree panel 的列展示上。tree grid 的功能有例如 列调整,排序,过滤等等,以下是代码:

 

以下的 grid 和上面的 tree panel 差不多一样,只是添加为多列了,这个 xtyp treecolumn 提供缩进和文件夹结构。像一个正常的 grid 一样,tree grid 的列可以是任意类型的例如 checkbox,picture,button,URL 等等。

默认列大小是可调整的,如果需要你也可以固定它的宽度。看下面的代码:

 

这是上面 Tree Grid 的输出结果:

 1

 

Data views

Ext.view.View (xtype:dataview) 一个现实数据的自定义模板。你需要提供自定义的模板和数据源(store)。模板应该使用 Ext.XTemplate 。

data view 提供了内置的事件,例如 click,double-click,mouseover,mouseout,等等。

首先我们创建一个简单的 model 名为 Person ,还需要创建一个 store 并持有 Person 的列表,如以下代码所示:

 

然后我们要来创建这个模板。下列模板使用 HTML 的 table 元素来呈现自定义格式的数据。

在模板中使用一个 model 的字段时,你可以使用花括号包括字段名的方式来使用它,例如:{fieldname}

XTemplate 支持有条件的展现和 if 语句,如以下代码所示:

 

看上面的例子,我使用了 awesome 字体图标的样式。你需要添加下列代码到你的 HTML 文件才行:

 

一下代码创建了一个 data view,并且它指定了使用的数据源 store ,template 和 itemSelector :

 

itemSelector 是一个必须的简单 CSS 选择器。这里 itemSelector 是应用于在 template 中的 HTML ,就是使用 data-view 类的 div 标签,最终根据这个模板,你在 data view 中选择的每一个 item ,就是这样一个 div 标签,设置了 itemSelector 属性,data view 会知道如何处理这些节点,itemSelector 是用于将 DOM 节点映射到 records 。

你可以监听的事件例如 click ,double-click ,等等,以上代码已经添加了监听,下列是输出结果:

 1

 

图片浏览器 – 一个示例项目

惯例,我们将用一个示例项目来回顾本章所学,下面是示例项目的最终设计效果:

1

通过查看这个设计,你会看到我们使用的最重要的组件就是 tree panel 和 data view 。它们如何使用和一些概念已经在本章的前面部分提及。

 

我们看看, 项目的目录结构。

  • 完整的源码在这里 https://github.com/ananddayalan/extjs-byexample-picture-explorer

1

下列视图代码是本项目的重要部分。这个视图呈现了应用中大部分可视组件。它使用 tree panle 和 data view :

 

 

控制器 ViewController 里处理了 tree panel 的 itemdblclick 事件,只显示所选择节点下的图片。

还有一个 upload 按钮的 click 事件,这里是未处理的。额,这是你的作业啦。看看下列代码:

 

Model 和 Store 的代码在这儿。

  • 注意:当你不指定 model 的字段类型时,将会自动猜测类型。

 

 

我是用的 Go 语言为此项目写的 REST API 。完整可用的代码在这里 https://github.com/ananddayalan/extjs-byexample-picture-explorer

图片浏览器这个示例是一个非常简单并用来学习 tree panel 和 data view 使用是很合适的。也可以通过添加更多功能来改进这个例子。例如如何通过拖拽将图片从一个相册移动到另一个相册中。 我会留给你作为一个编码的练习,但在这里,我给你简要的概述一下拖拽功能,这将帮助你在此项目中添加拖拽功能。

 

拖拽

任意元素或组件都能支持拖拽。使用拖拽有三个重要的事情:

  • 配置 item 为可拖拽的Configure the items as draggable
  • 创建放置目标
  • 完成放置目标

 

配置 item 为可拖拽的

想要拖拽一个 item ,你需要为每一个元素创建 Ext.dd.DD 实例。

查看下列代码,通过创建 Ext.dd.DD 让所有使用 pics 类的 div 元素成为可拖拽的:

 

创建放置目标

使用 Ext.dd.DDTarget 创建放置容器。以下代码为所有的使用 album 类的 div 元素创建放置目标:

 

完成放置目标

当一个可拖拽项放置到一个放置容器,我们需要从这个 item 的源位置将它移动到目标位置。这通过覆盖 DD 的 onDragDrop 方法来实现。看一看下列代码:

 

因为 DD 元素已经是实例了,重写的方法需要应用 Ext.apply(dd, overrides) ,如以下代码所示:

 

总结

在本章中,你学习到如何使用拖拽功能。我们也看了几个高级组件:tree panel 和 data view。最后结合所学创建了一个示例项目。

转载于:https://www.cnblogs.com/hq2008/p/5804656.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/573223.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android没有apk文件怎么打开方式,ios怎么打开apk文件,安卓无法打开apk文件

?  许多win7系统小伙伴在打开电脑中,经常会看到一些文件格式自己不知道是什么以及不知道要怎么打开,比如apk文件,APK是Android Package的缩写,即Android安装包,几乎所有的安卓应用程序都是这种格式,那么…

android屏幕基础知识

首先,先来上一张图,看看android屏幕分辨率的占比情况 什么是dp,dip,dpi,sp、px ?之间的关系是什么? px:构成图像的最小单位 dp/dip:密度无关像素 以160dpi为基准 1dp1px sp&#xf…

Android模糊查询excel文件内容,【excel】模糊查询关键字

求Excel大神指点迷津。如何批量模糊查找和替换。例如,A1:A100,每个单元格有一段文字。B1:B200,每个单元格有一个关键词。我的目的是在A1:A100中查找包含B1的单元格,找到后把这个单元格内容换成B1的内容。然后查找B2替换B2...一直到B200解决办…

日语的学习

1. 50 音图与假名 日本:に(ni)は(ho)ん(nn)谢谢:あ(a)り(ri)が(ga)と(to)う&#xff0…

android 翻转切换view,Android ViewFlipper翻转视图使用详解

简介ViewFlipper是Android自带的一个多页面管理控件且可以自动播放!它和ViewPager有所不同,ViewPager继承自ViewGroup,是一页一页的,可以带动画效果,可以兼容低版本;而ViewFlipper继承ViewAnimator&#xf…

拓扑学初步

拓扑(Topology)原本是一个数学概念,描述的是几何图形或空间在连续改变形状后还能保持不变的性质。2016 年度的诺贝尔物理学奖颁给的三位物理学家,正是凭借他们在物理学中引入了拓扑的概念。0. 基本概念 & 定义 同胚&#xff1…

android 京东白条支付,京东网银钱包安卓版上线:整合京东白条和小金库

京东金融网银钱包移动版上线 京东账号可直接登录【TechWeb报道】4月1日消息,京东金融今日宣布网银钱包客户端正式在Android平台上线。网银钱包客户端近期也将登录苹果应用商店,用户使用京东账号将可以直接登录。据悉,网银钱包客户端是京东金融…

android 缓存头像,android 实现类似微信缓存和即时更新好友头像示例

引言使用微信时我们会发现,首次进入微信的好友列表时,会加载好友头像,但是再次进入时,就不用重新加载了,而且其他页面都不用重新加载,说明微信的好友头像是缓存在本地的,然后好友修改头像后&…

JQuery 之 跳出循环

1、跳出each循环  return false 跳出循环 return true 进入下一个循环2、跳出for循环  break;直接退出for这个循环。这个循环将不再被执行!  continue;直接跳出本次for循环。下次继续执行。  return语句就是用于指定函数返回的值。即使函数主体中还有其他语…

android包结构规范,【Android】Android产品-开发规范

前言为什么需要开发规范?编码规范对于程序员而言尤为重要,有以下几个原因:1)一个软件的生命周期中,80%的花费在于维护2)几乎没有任何一个软件,在其整个生命周期中,均由最初的开发人员来维护3)编码规范可以改…

JavaScript语法(二)

函数:完成某项特定的功能。 函数的四要素:名称、输入、返回值、加工。 定义函数:function(定义) 函数的名字(形参){ 函数体(加工)} 文本框加 按钮(调用) …

html 透明度渐变效果,CSS3不透明度渐变?

您可以在CSS中执行此操作,但Chrome浏览器,Safari和Opera的浏览器目前还没有太多的支持。 Firefox目前只支持SVG掩码。有关更多信息,请参阅Caniuse结果。CSS:p {color: red;-webkit-mask-image: -webkit-gradient(linear,left top,…

JSP知识点大致介绍1

解释:当jsp写好,运行服务器,还没有发出请求(写网址按Enter),Tomcat的work下是没有字节码文件的。当写网址:localhost:8888/xxxx/index.jsp按Enter,运行后work下就有字节码文件了&…

发一则自己创作的Lae程序员小漫画,仅供一乐

转载于:https://www.cnblogs.com/aaqxhaa1979/p/5817650.html

html打折代码,HTML打折计算价格实现原理与脚本代码

原标题:HTML打折计算价格实现原理与脚本代码打折后价格计算function calculator(){var pricesdocument.getElementById("price");var discountsdocument.getElementById("number");var pay;var selectdocument.getElementById("payfunctio…

Material Design控件使用学习 toolbar+drawerlayout+ Snackbar

效果 1.,导包design包和appcompat-v7 &#xff0c;设置Theme主题Style为NoActionbar 2.custom_toolbar.xml <?xml version"1.0" encoding"utf-8"?><android.support.v7.widget.Toolbar xmlns:android"http://schemas.android.com/apk/res/…

计算机组装虚拟实验,组装计算机的虚拟实验室

摘要&#xff1a;根据初中信息技术教育教学的特点:以实际应用能力为中心,以教育文化素质为根本,以掌握基本概念、强化应用为目的,加强技能训练,注重培养学生动手操作能力。对于提高学生的实际应用能力,模拟实验将是提升课堂效率极为重要的一个坏节。 本文针对目前算机硬件更新速…

使用渐进式JPEG来提升用户体验

今天才认识到原来JPEG文件有两种保存方式他们分别是Baseline JPEG&#xff08;标准型&#xff09;和Progressive JPEG&#xff08;渐进式&#xff09;。两种格式有相同尺寸以及图像数据&#xff0c;他们的扩展名也是相同的&#xff0c;唯一的区别是二者显示的方式不同。 Baseli…

html英文读法,classin读音发音 classln英文怎么读?

classln英文怎么读?class in 读音&#xff1a; [klɑːs] [ɪn] class英 [klɑːs] 美 [kls] in英 [ɪn] 美 [ɪn] 重点词汇&#xff1a; class英 [klɑːs] 美 [kls] n. 等级&#xff1b;阶级&#xff1b;阶层&#xff1b;班级&#xff1b;课&#xff1b;v. 分类 过去式: cla…

季度报告 选择日期_易方达富惠纯债债券型证券投资基金 2018年第4季度报告

2018年12月31日基金管理人&#xff1a;易方达基金管理有限公司基金托管人&#xff1a;中国银行股份有限公司报告送出日期&#xff1a;二一九年一月二十二日1 重要提示基金管理人的董事会及董事保证本报告所载资料不存在虚假记载、误导性陈述或重大遗漏&#xff0c;并对其内容…