07.JavaWeb-Vue+elementUI

2023-11-14

 

1.Vue

        功能替代JavaScript和jQuery,基于JavaScript实现的前端框架

1.1配置Vue

1.1.1引入vue库

        方法一:通过cdn链接引入最新版本的vue(可能会慢些)

<head>
    <script src="https://cdn.jsdelivr.net/npm/vue"></script>
</head>

        方法二:将vue库下载到本地,通过相对路径引入

<head>
    <script src="js/vue/vue.js"></script>
</head>

1.1.2创建vue实例

<script>
  // 创建Vue对象
  new Vue({
    el: '#app',   //vue作用于指定的元素及其子元素
    data: {       //用来声明vue的属性、页面上需要的东西
      user:{    
        account:"",
        password:""
      }
    },
    methods:{        //元素触发的方法
            login: function (){
                console.log("账号"+this.user.account)
                console.log("密码"+this.user.password)
                //利用axios发送请求,then等同于ajax的success
                axios.post("login",this.user).then(res =>{
                    //res后台返回的结果
                    console.log(res)
                })
            }
        }
  });
</script>

 1.1.3创建vue模板

<div id="app">
  <p>{{ message }}</p>
</div>

         {{message}}是一个模板表达式,它会被Vue实例的message数据所替代

1.2 axios

        发请求的工具,作用与$.ajax一致

axios.post("login",this.user).then(res =>{
    //res后台返回的结果
    console.log(res)
    alert(res.data)
})

         注意:axios数据提交的是一个字符串,ajax提交的是对象,可以加注解将字符串转换成注解

//@RequestBody将json格式的字符串转换为对象
public void login(@RequestBody User user){}

1.3 element-ui

        基于vue的组件库,地址:(Element - The world's most popular Vue UI framework)

        里面有很多已经做好的很好看的也好用的组件(按钮、输入框、开关。。。)

<div id="app">
    <el-row>
<!--        span指定当前行分几列-->
        <el-col :span="6">
            <el-input v-model="user.account" placeholder="请输入账号"></el-input>
            <el-input v-model="user.password" placeholder="请输入密码" show-password></el-input>
            <el-button type="primary" icon="el-icon-delete-solid" circle></el-button>
            <el-button type="primary" @click="login()" icon="el-icon-ice-cream-                       square" round>登录</el-button>
        </el-col>
    </el-row>
<!--    获取账号,并实时显示在页面-->
<!--    <p>{{account}}</p>-->
</div>

1.3.1配置使用环境

        获取配置文件的地址:(UNPKG - element-ui)

        1.在webapp中创建css/vue与js文件夹用来存储,vue中放一个element-index.css文件和一个fonts文件夹里面有两个字体相关文件,js中放一个vue文件夹里面有axios.min.js和elemant-index.js和vue.js

        2.在页面head中连接这些文件,并配置vue

<head>
    <script src="js/vue/vue.js"></script>
    <script src="js/vue/axios.min.js"></script>
    <link rel="stylesheet" href="css/vue/element-index.css">
    <script src="js/vue/element-index.js"></script>
</head>

        3.创建elementUI的组件

<div id="app">
    <el-row>
<!--        span指定当前行分几列-->
        <el-col :span="6">
            <el-input v-model="user.account" placeholder="请输入账号"></el-input>
            <el-input v-model="user.password" placeholder="请输入密码" show-password></el-input>
            <el-button type="primary" icon="el-icon-delete-solid" circle></el-button>
            <el-button type="primary" @click="login()" icon="el-icon-ice-cream-                       square" round>登录</el-button>
        </el-col>
    </el-row>
<!--    获取账号,并实时显示在页面-->
<!--    <p>{{account}}</p>-->
</div>

         4.创建Vue对象

        要想使用elementUI的组件,还需要创建Vue对象

<script>
    //创建vue对象
    new Vue({
        el:"#app",  //vue作用于指定的元素及其子元素
    })
</script>

1.4 双向数据绑定

        Vue.js框架实现的一项核心功能就是“双向数据绑定”,所谓双向数据绑定就是指View(视图)和Model(模型)的数据相互同步。(双向数据绑定通过v-model来实现)

1.4.1 v-model原理*

        先为绑定的元素添加value属性,value与Vue实例中指定的数据绑定,再为元素添加一个事件监听器,当用户输入时触发并更新value值,从而更新Vue实例中的数据对象

1.4.2 延迟更新数据

        通过v-model绑定的数据会在文本输入框改变时同步更新Vue数据对象,但我们一般想要的是用户输入完毕、光标离开输入框时再更新数据,这就要用到 .lazy修饰符

<input v-model.lazy="message" type="text">

1.4.3 将用户输入的值自动转为数值类型(Number)

<input v-model.number="quantity" type="number">

        注意:如果用户输入的值无法转换为有效的数值,数据属性会变成NaN

1.4.4 删除文本输入框内容首尾空格

<input type="text" v-model.trim="message">

1.5 实现联结选择框

        就是选择第一个决定第二个里有哪些项,这样嵌套下去

1.5.1 将数据嵌套起来

    buildings: [{
        id: '1',
        label: '1栋',
        units: [{id: '1',
            label: '1单元',
            rooms: [
                {id: '1', label: '1-1-1'},
            ],
        }, {id: '2',
            label: '2单元',
            rooms: [
                {id: '1', label: '1-2-1'},
                {id: '2', label: '1-2-2'},
            ],
        }, 
    },

1.5.2 为外层数据对应的元素添加@change事件

<el-select v-model="building" filterable placeholder="请选择楼栋" @change="changeBuilding()">

<el-select v-model="unit" filterable placeholder="请选择单元" @change="changeUnit()">

1.5.3 设计事件触发的函数

changeBuilding :function (){
        console.log(this.building)
        //遍历楼栋比较id
        for (const item of this.buildings) {
            if(this.building==item.id){
                this.units = item.units;
                break;
            }
        }
    },
    changeUnit:function (){
        for (const item of this.units) {
            if(this.unit==item.id){
                this.rooms = item.rooms;
                break;
            }
        }
    },

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

07.JavaWeb-Vue+elementUI 的相关文章

随机推荐

  • 第50讲:Scrapy 部署不用愁,Scrapyd 的原理和使用

    上节课我们的分布式爬虫部署完成并可以成功运行了 但是有个环节非常烦琐 那就是代码部署 我们设想下面的几个场景 如果采用上传文件的方式部署代码 我们首先需要将代码压缩 然后采用 SFTP 或 FTP 的方式将文件上传到服务器 之后再连接服务器
  • linux磁盘分区以及配置文件设置

    硬盘分区有三种 主磁盘分区 83 扩展磁盘分区 5 逻辑分区 包括swap交换分区82 一个硬盘主分区至少有1个 最多4个 扩展分区可以没有 最多1个 且主分区 扩展分区总共不能超过4个 逻辑分区可以有若干个 交换分区必须存在但一般不用 补
  • hdu 6121 Build a tree

    Problem acm hdu edu cn showproblem php pid 6121 Meaning 一棵 n 个点的完全 k 叉树 结点标号从 0 到 n 1 求以每一棵子树的大小的异或和 Analysis 一层层地统计答案 找
  • LED 数码管共阴共阳的区别+静态/动态显示

    51单片机 数码管动态显示 1 共阴共阳定义 LED 共阴极指的是LED共同的接点是GND 接地 而共阳极指的是LED共同的接点是电源 LED亮灯的条件是两端有电势差 最后一段h dp小数点在高位 第一段a在低位 hgfedcba xxxx
  • 【算法学习笔记】19:拓扑排序

    1 简述 计算拓扑序列的一个方式是 用BFS来尝试访问所有的节点 但是有一个约束就是只有入度为 0 0 0的节点才能被加入到扩展队列里 每次从队列里取出一个节点 也就同时在图中将这个节点拆除 所以它的所有后继的节点都减少 1 1 1 如果已
  • STM32使用串口(空闲中断IDLE+DMA)接收ESP8266数据

    串口空闲中断 ESP8266收发数据 一 在使用ESP8266模块时遇到的一些问题 首先是对模块数据的收发 我们在发送AT指令时会收到模块发送的反馈数据 在我们没有使用实时操作系统的情况下 通过HAL库的串口收发函数是比较难以完成工作的 我
  • aaa计费请求_什么是AAA(身份验证,授权和计费)?

    aaa计费请求 AAA or Authentication Authorization and Accounting is a term used to describe 3 functions in IT Mainly AAA is us
  • 导航样式

    鼠标滑过 bottom 黄线从中间展开到两边
  • NLP: 0基础应用T5模型进行文本翻译代码实例~

    文章目录 前言 一 目标文本是什么 二 模型调用步骤 1 引入库 2 导入模型 本文使用 t5 base 3 使用分词器对目标文本进行分词 4 对刚刚生成的分词结果进行目标语言的生成工作 5 对生成的目标语言进行解码工作 就可得到目标语言的
  • 一文读懂Matter协议的前世今生和未来

    从事Zigbee行业的应该都知道今年Zigbee联盟已经改名为CSA联盟 并推出一个全新的 定位于解决IOT碎片化的统一协议 即Matter协议 Matter协议的由来 Matter协议的前身CHIP Connected Home Over
  • 从一个数组中随机取出若干个数

    随机取数 下面给出从一个数组随机取出若干数字组成新书组和从一个数组随机取出一个数字的方法 代码如下 从一个数组中随机取出若干个元素组成数组 param Array arr 原数组 param Number count 需要随机取得个数 co
  • 如何确保事务提交后才执行异步操作

    参考博客TransactionSynchronizationManager和TransactionSynchronizationAdapter 场景 业务流程背景 对于 法律法规 法规库 标签管理 列表中的某一条数据 操作完标注和解析按钮后
  • Angular离线API文档安装指南

    需要的材料 nginx 官方angularjs zip 完整包 步骤 1 先上www angular org 下载个完整的zip包 2 到nginx 网站下载 nginx 3 修改 nginx 1 6 2 conf nginx conf 文
  • 利用win10自带的工具测硬盘读写速度

    利用win10自带的硬盘测试工具测读写速度 一 win q 打开搜索框 输入 cmd 找到命令提示符 右击以管理员身份运行 二 在命令框里输入 winsat disk 是默认测试系统盘的速度 不出意外都是C盘 三 当我们要想测试其他盘的时候
  • MySQL学习笔记——MySQL数据类型(拉勾教育数据分析实战训练营学习笔记)

    MySQL学习笔记 MySQL数据类型 MySQL数据库中 每一条数据都有其数据类型 主要可以分为数值型 字符串型和日期时间型三大类 说明如下所示 数值类型 TINYINT 一个非常小的整数 占1字节 如果是有符号 范围是 128 127
  • MFC窗口销毁过程

    MFC窗口销毁过程 考虑单窗口情况 假设自己通过new创建了一个窗口对象pWnd 然后pWnd gt Create 则销毁窗口的调用次序 1 手工调用pWnd gt DestroyWindow 2 DestroyWin
  • Elasticsearch实战-磁盘IO被打满

    背景 事情是这样的 一天下午4点42分左右 业务反馈我开发的服务在测试环境出现问题 返回资源数据是0 查日志发现是ES访问超时 相当于数据库挂了 持续了20多分钟自己恢复 咨询了ES团队 最终得到下面的答复 当前集群现状 1 当前集群数据I
  • python爬取研究生招生网招生信息

    import requests from bs4 import BeautifulSoup from pandas core frame import DataFrame import re import time class Gradua
  • Nginx惊群问题

    Nginx惊群问题 1 简介 简单来说 多线程 多进程 linux下线程进程也没有多大区别 等待同一个socket事件 当这个事件发生时 这些线程 进程被同时唤醒 就是惊群 可以想见 效率很低下 许多进程被内核重新调度唤醒 同时去响应这一个
  • 07.JavaWeb-Vue+elementUI

    1 Vue 功能替代JavaScript和jQuery 基于JavaScript实现的前端框架 1 1配置Vue 1 1 1引入vue库 方法一 通过cdn链接引入最新版本的vue 可能会慢些 方法二 将vue库下载到本地 通过相对路径引入