博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Extjs6(四)——侧边栏导航根据路由跳转页面
阅读量:5290 次
发布时间:2019-06-14

本文共 2423 字,大约阅读时间需要 8 分钟。

本文基于ext-6.0.0

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

  另:这篇是接着上一篇的侧边栏写的,最好先看一下上一篇

 

  先看一下效果,如下图:

    

    

一、写页面的中间部分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},

 

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

 

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

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

 

转载于:https://www.cnblogs.com/MaiJiangDou/p/6762332.html

你可能感兴趣的文章
没有欲望是一种什么样的感觉
查看>>
pzoj Problem 2127 养鸡场
查看>>
有趣的JavaScript隐式类型转换
查看>>
wireshark 无法抓取本地数据包
查看>>
sql 知道年龄 数据库里面只有身份证 查询条件为这个年龄的所有数据
查看>>
android 高德地图出现【定位失败key鉴权失败】
查看>>
如何使用mybatis插入数据之前就具生成id值
查看>>
算法笔记--基础数学知识
查看>>
Extjs Dom
查看>>
初始化linux部署tomcat
查看>>
Predictive Analytics for Business
查看>>
Python中常用的模块(OS模块)
查看>>
Why should a self-implemented getter retain and autorelease the returned object
查看>>
altera小实验——第一个demo指导书
查看>>
强化学习1
查看>>
NSArray的sorting排序
查看>>
docker建立和共享文件(服务器和docker之间的共享)
查看>>
全文检索技术---solr
查看>>
动态内存分配(Dynamic memory allocation)
查看>>
Java学习 第三章 java基础(一)
查看>>