Vue进阶知识笔记

梦想不抛弃苦心追求的人,只要不停止追求,你们会沐浴在梦想的光辉之中。再美好的梦想与目标,再完美的计划和方案,如果不能尽快在行动中落实,最终只能是纸上谈兵,空想一番。只要瞄准了大方向,坚持不懈地做下去,才能够扫除挡在梦想前面的障碍,实现美好的人生蓝图。Vue进阶知识笔记,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

一、前端拦截与参数获取

当我们写Java后台的时候,常常用到filter来进行一些过滤拦截。前端实际上也有类似的功能, 称为响应拦截。
在Vue中怎么实现这种功能呢?
第一步:进入router/index.js
第二步:末尾添加

/**
 *  拦截
 */
router.beforeEach((to, from, next) => {
  if(to.path='/login'){...}
  if(to.query.key === ?){...}
})

其中:to.path是来访Mapping,如www.baidu.com/login中的’/login’。
to.query.key是取出路径中主键为’key’的参数的值
通过这样的操作,我们就可以很容易的在访问符合某种规则时做出响应的方法

二、配合Element中的select、option、和tree实现复杂的多级下拉框

效果:
多级下拉框效果展示
1、标签嵌套结构:

<el-select v-model="treeNodeName" placeholder="选择区域">
            <el-option :value="treeNode" style="padding: 0px;">
              <el-tree
                ref="selectTree"
                :props="props"
                :load="loadNode1"
                lazy
                :node-key="treeId"
                :default-expanded-keys="defaultExpandedKey"
                @node-click="handleNodeClick"
              >
              </el-tree>
            </el-option>
          </el-select>

说明:treeNodeName是双向绑定,承载最终的选择结果,:value=”treeNode”指的是当前选择的那一条选项实际指向的数据,ref可以近似地理解为id。load则是结点加载函数。由于采用懒加载,所以只有当某一个对应条目被点击时,才会触发加载子节点的函数。handlecodeClick函数则是用于处理点击某个结点时将数值读取到绑定值上。props是配置选项,配置选项中的配置值必须和实体类的字段相对应:

props: {
        id: 'id',
        label: 'name',
        children: [],
        isLeaf: true
      },

那么,node的字段就必须是id,name,children
js部分:
1、设置默认配置:

// 初始化值
    initHandle() {
      if (this.valueId) {
        this.data = this.$refs.selectTree.getNode(this.valueId).data.title // 初始化显示
        this.$refs.selectTree.setCurrentKey(this.valueId) // 设置默认选中
        this.defaultExpandedKey = [this.valueId] // 设置默认展开
      }
    }

2、结点加载:

// 加载树结点
    loadNode1(node, resolve) {
      if (node.data) {
        this.treeId = node.data.id
      }
      if (node.level === 0) {
        const getTreeID = JSON.stringify({
          id: ''
        })
        this.$http.post(this.$http.Url('/test/getNode.do'), getTreeID, { emulateJSON: true }).then(({ data }) => {
          return resolve(data)
        })
      }
      if (node.level >= 1) {
        const getTreeID = JSON.stringify({
          id: this.treeId
        })
        this.$http.post(this.$http.Url('/test/getNode.do'), getTreeID, { emulateJSON: true }).then(({ data }) => {
          if (data.length === 0) {
            return resolve([])
          }
          return resolve(data)
        })
      }
    }

3、处理节点点击事件

handleNodeClick(node) {
      // this.dataForm.areaCode = node.id
      this.treeNodeName = node.name
      this.id= node.id
      this.defaultExpandedKey = []
    }

后台对应的结点实体类:

public class ZtreeNode {
	private long id;// 结点id
	private String code;// 结点编码
	private String name;// 节点名称
	private Integer grade;// 结点级别
	private Integer displayOrder;// 显示顺序
	private Integer pId;// 父节点id
	private Boolean open; // 是否展开
	private Boolean isParent;// 是否是父节点
	private int currentState;// 当前状态(是否删除等)
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/153542.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!