本文基于ext-6.0.0

  之前做的时候这个侧边栏导航是通过tab切换来切换页面的,但是总感觉不太对劲,现在终于发现怎么通过路由跳转了,分享给大家,可能有些不完善的地方,望大家读后可以给些指点。欢迎留言!

  另:这篇是接着上一篇的侧边栏写的,最好先看一下上一篇Extjs6(三)——用extjs6.0写一个简单页面

  先看一下效果,如下图:

    

    

一、写页面的中间部分treesCenter.js

  treesCenter.js

Ext.define('Learning.view.treelearn.region.treesCenter', {
extend: 'Ext.panel.Panel',
xtype: 'treesCenter',
autoScroll: true
});

  别忘了把它引用到页面中(下面的写在trees.js里面)

    {
reference:'treesCenter',
xtype:'treesCenter',
region :'center',
collapsible: false,
split: false,
},

二、treeController.js

  1、指明要控制的组件

     在选择改变时,调用onTreeNavSelectionChange

  control: {
'treesLeft': {//组件别名,表示要控制的是该组件
selectionchange: 'onTreeNavSelectionChange'
}
},

  2、写onTreeNavSelectionChange

    redirectTo方法是用来更新Hash的,例如this.redirectTo('user/1234'),会更新 Hash 为 "#user/1234" ;更新的Hash与当前值相同时,redirectTo方法返回false,不会更新Hash。

    id是写在data.json里,就是上一篇侧边栏的数据

  onTreeNavSelectionChange: function(selModel, records) {
var record = records[0];
if (record) {
this.redirectTo(record.getId());
alert(record.getId())
}
},

  

  现在看一下效果,点击侧边栏任意一个,会弹出相应的id,如下图:

  

3、routes 配置

  我们使用的路由是  /#id  ,如:  

  “:id”中的这个id是参数,这个参数会传入handleRoute。

  routes  : {
':id': 'handleRoute',//执行跳转
},

4、写handleRoute

  ①先声明一些变量

  ②响应路由,左侧树定位到相应节点,把中间面板treesCenter清空

  ③如果是叶子结点,就把id对应的页面放到treesCenter中显示出来(id一定要和子页面的xtype一致)

handleRoute : function(id) {
var me = this,
treeView = me.getView(),
treesLeft = treeView.down('treesLeft'),
treesCenter = treeView.down('treesCenter'),
store = treesLeft.getStore(),
node = store.getNodeById(id),
className,cmp,ViewClass; //响应路由,左侧树定位到相应节点
treesLeft.getSelectionModel().select(node);
treesLeft.getView().focusNode(node); treesCenter.removeAll(true);
if (node.isLeaf()) {
className = Ext.ClassManager.getNameByAlias('widget.' + id);
cmp = Ext.create(className);
treesCenter.add(cmp);
}
},

三、子页面

  子页面随便写什么都可以,这里就用生成项目时自带的那个List.js吧。

  List.js的xtype是mainlist,就在data.json中写

{
id: 'mainlist',
text: 'list',
leaf: true
},

到此,就可以得到文初的效果了。

 完。---------------------------------------------

昨天写的没保存,你说气不气嘛╭(╯^╰)╮

Extjs6(四)——侧边栏导航根据路由跳转页面的更多相关文章

  1. 提示框,对话框,路由跳转页面,跑马灯,幻灯片及list组件的应用

    目录: 主页面的js业务逻辑层 主页面视图层 主页面css属性设置 跳转页面一的js业务逻辑层 跳转页面一的视图层 跳转页面二的视图层 跳转页面三的js业务逻辑层 跳转页面三的视图层 跳转页面三的cs ...

  2. Ionic5路由跳转传值复用

    1. 路由技术 ( 详细记录 ) 是笔记不是博文,觉得写的不够详细的可以使用Ctrl + W组合键 路由跳转页面 1. HTML 中使用 routerLink 属性路由进行跳转,传值时使用 query ...

  3. React Native之使用导航器跳转页面(react-navigation)

    react-navigation是一个导航库,要使用react-navigation来实现跳转页面,首先得在项目中安装此库,由于Yarn是Facebook提供的替代npm的工具,可以加速node模块的 ...

  4. 详解vue 路由跳转四种方式 (带参数)

    详解vue 路由跳转四种方式 (带参数):https://www.jb51.net/article/160401.htm 1.  router-link ? 1 2 3 4 5 6 7 8 9 10 ...

  5. Vue+elementUI 自定义动态数据菜单导航组件实现展开收缩+路由跳转router-view渲染数据 路由跳转到同一个页面带参数ID 自动刷新数据

    准备:导入ElementUI 看官网教程 数据准备:JSON数据转换成树状 参考文章: JS实现 JSON扁平数据转换树状数据 后台我拿的数据是这样的格式: [ {id:1 , parentId: 0 ...

  6. angular中路由跳转并传值四种方式

    一.路由传值 步骤1 路由传递参数 注意 一定是要传递 索引值 let key = index 这种情况是在浏览器中可以显示对应的参数 这种的是问号 localhost:8080/news?id=2& ...

  7. Vue框架(四)——路由跳转、路由传参、cookies、axios、跨域问题、element-ui模块

    路由跳转 三种方式: $router.push / $router.go / router-link to this.$router.push('/course'); this.$router.pus ...

  8. vue 所有的路由跳转加一个统一参数

    需求是什么 所有的路由跳转加一个统一的参数 实现方式 先深入理解一下router的全局前置守卫 router.beforeEach((to, from, next) => { const que ...

  9. Vue之路由跳转 传参 aixos 和cookie

    一.路由跳转 1.1 项目的初始化 vue create m-proj   >>>创建vue项目 精简vue项目的 views 视图   About(基本是删除的) Home.(可以 ...

随机推荐

  1. 201521123034《Java程序设计》第十二周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多流与文件相关内容. 2. 书面作业 将Student对象(属性:int id, String name,int age,doubl ...

  2. 《JAVA程序设计》第13周学习总结

    1. 本章学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. GET / HTTP/1.0可以返回一个HTML格式的文本页 IP地址可以用来标识网络上的主机 Socke ...

  3. 201521123122 《java程序设计》第十四周学习总结

    ## 201521123122 <java程序设计>第十四周实验总结 ## 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结多数据库相关内容. 2. 书面作业 1. M ...

  4. Hyperledger Fabric 1.0 从零开始(四)——Fabric源码及镜像文件处理

    2:Fabric源码及镜像文件处理 2.1下载Fabric源码 下载Fabric源码是因为要用到源码中提到的列子和工具,工具编译需要用到go语言环境,因此需要把源码目录放到$GOPATH下.通过1.3 ...

  5. [js高手之路]Node.js模板引擎教程-jade速学与实战2-流程控制,转义与非转义

    一.转义与非转义 jade模板文件代码: doctype html html head meta(charset='utf-8') title jade学习-by ghostwu body h3 转义 ...

  6. Intellij idea使用Junit

    之前使用idea做Junit测试的时候,都是一个一个方法来写,然后在方法名@Test这样测试-.. 后来发现eclipse有直接把整个类的方法都可以抽取出来,自动生成Junit测试方法-于是在找Ide ...

  7. SpringMVC的数据格式化-注解驱动的属性格式化

    一.什么是注解驱动的属性格式化? --在bean的属性中设置,SpringMVC处理 方法参数绑定数据.模型数据输出时自动通过注解应用格式化的功能. 二.注解类型 1.DateTimeFormat @ ...

  8. eclipse Maven新建一个项目并使用

      安装参考这篇博文eclipse配置maven + 创建maven项目(三)  打开pom.xml 试着添加MySQL的JDBC驱动 添加如下配置, <dependency> <g ...

  9. MongoDB 所支持的数据类型 创建和删除集合 创建和删除数据库

    数据类型 MongoDB 支持如下数据类型: String:字符串.存储数据常用的数据类型.在 MongoDB 中,UTF-8 编码的字符串才是合法的. Integer:整型数值.用于存储数值.根据你 ...

  10. 轻松把你的项目升级到PWA

    什么是PWA PWA(Progressive Web Apps,渐进式网页应用)是Google在2015年推出的项目,致力于通过web app获得类似native app体验的网站. 优点 1.无需客 ...