15天深度复习JavaWeb的详细笔记(十一)——VUE、Element

news/2024/5/16 20:12:31/文章来源:https://blog.csdn.net/maxiangyu_/article/details/127003144

文章目录

  • demo11-VUE、Element
    • 1,VUE
      • 1.1 概述
      • 1.2 快速入门
      • 1.3 Vue 指令
        • 1.3.1 v-bind & v-model 指令
        • 1.3.2 v-on 指令
        • 1.3.3 条件判断指令
        • 1.3.4 v-for 指令
      • 1.4 生命周期
    • 2,Element
      • 2.1 快速入门
      • 2.2 Element 布局
        • 2.2.1 Layout 局部
        • 2.2.2 Container 布局容器
      • 2.3 案例
        • 2.3.1 准备基本页面
        • 2.3.2 完成表格展示
          • 2.3.2.1 拷贝
          • 2.3.2.2 修改
        • 2.3.3 完成搜索表单展示
        • 2.3.4 完成批量删除和新增按钮展示
        • 2.3.5 完成对话框展示
        • 2.3.6 完成分页条展示
        • 2.3.7 完整页面代码

demo11-VUE、Element

1,VUE

1.1 概述

Vue 是一套前端框架,免除原生JavaScript中的DOM操作,简化书写。

我们之前也学习过后端的框架 MybatisMybatis 是用来简化 jdbc 代码编写的;而 VUE 是前端的框架,是用来简化 JavaScript 代码编写的。前一天我们做了一个综合性的案例,里面进行了大量的DOM操作,如下

在这里插入图片描述

学习了 VUE 后,这部分代码我们就不需要再写了。那么 VUE 是如何简化 DOM 书写呢?

==基于MVVM(Model-View-ViewModel)思想,实现数据的双向绑定,将编程的关注点放在数据上。==之前我们是将关注点放在了 DOM 操作上;而要了解 MVVM 思想,必须先聊聊 MVC 思想,如下图就是 MVC 思想图解

在这里插入图片描述

C 就是咱们 js 代码,M 就是数据,而 V 是页面上展示的内容,如下图是我们之前写的代码

在这里插入图片描述

MVC 思想是没法进行双向绑定的。双向绑定是指当数据模型数据发生变化时,页面展示的会随之发生变化,而如果表单数据发生变化,绑定的模型数据也随之发生变化。接下来我们聊聊 MVVM 思想,如下图是三个组件图解

在这里插入图片描述

图中的 Model 就是我们的数据,View 是视图,也就是页面标签,是用户可以通过浏览器看到的内容;ModelView 是通过 ViewModel 对象进行双向绑定的,而 ViewModel 对象是 Vue 提供的。接下来让大家看一下双向绑定的效果

在这里插入图片描述

  • input输入框和{{username}}是视图,username是模型
  • input输入框输入数据后,会将数据绑定到username模型上,然后{{username}}又把模型中的数据取出来进行展示
  • 最后结果是:第一个视图(输入框)变化后模型会跟着变化,模型变化后第二个视图({{username}})会跟着变化

通过浏览器打开该页面可以看到如下页面

在这里插入图片描述

当我们在输入框中输入内容,而输入框后面随之实时的展示我们输入的内容,这就是双向绑定的效果。

1.2 快速入门

  1. 新建 HTML 页面,引入 Vue.js文件

    <script src="js/vue.js"></script>
    
  2. 在JS代码区域,创建Vue核心对象,进行数据绑定

    new Vue({el: "#app",data() {return {username: ""}}
    });
    

    创建 Vue 对象时,需要传递一个 js 对象,而该对象中需要如下属性:

    • el : 用来指定哪儿些标签受 Vue 管理。 该属性取值 #app 中的 app 需要是受管理的标签的id属性值
    • data :用来定义数据模型
    • methods :用来定义函数。这个我们在后面就会用到
  3. 编写视图

    <div id="app"><input name="username" v-model="username" >{{username}}
    </div>
    

    {{}} 是 Vue 中定义的 插值表达式 ,在里面写数据模型,到时候会将该模型的数据值展示在这个位置。

在项目下创建01-vue-demo1.html,编写代码:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<div id="app"><input v-model="username"><!--插值表达式-->{{username}}
</div>
<script src="js/vue.js"></script>
<script>//1. 创建Vue核心对象new Vue({el:"#app",data(){return {username:""}}/*data: function () {return {username:""}}*/});
</script>
</body>
</html>

1.3 Vue 指令

**指令:**HTML 标签上带有 v- 前缀的特殊属性,不同指令具有不同含义。例如:v-if,v-for…

常用的指令有:

指令作用
v-bind为HTML标签绑定属性值,如设置 href , css样式等
v-model在表单元素上创建双向数据绑定
v-on为HTML标签绑定事件
v-if
v-else
v-else-if
条件性的渲染某元素,判定为true时渲染,否则不渲染
v-show根据条件展示某元素,和上面的三个条件渲染区别在于切换的是display属性的值
v-for列表渲染,遍历容器的元素或者对象的属性

1.3.1 v-bind & v-model 指令

  • v-bind

    该指令可以给标签原有属性绑定模型数据。这样模型数据发生变化,标签属性值也随之发生变化

    例如:

    <a v-bind:href="url">百度一下</a>
    

    上面的 v-bind:" 可以简化写成 : ,如下:

    <!--v-bind 可以省略
    -->
    <a :href="url">百度一下</a>
    
  • v-model

    该指令可以给表单项标签绑定模型数据。这样就能实现双向绑定效果。例如:

    <input name="username" v-model="username">
    

在项目下创建02-vue-bind.html,编写代码:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<div id="app"><a v-bind:href="url">点击一下</a><a :href="url">点击一下</a><input v-model="url">
</div>
<script src="js/vue.js"></script>
<script>new Vue({el:"#app",data(){return {url:"https://www.baidu.com"}}});
</script>
</body>
</html>

通过浏览器打开上面页面,并且使用检查查看超链接的路径,该路径会根据输入框输入的路径变化而变化,这是因为超链接和输入框绑定的是同一个模型数据

在这里插入图片描述

1.3.2 v-on 指令

我们在页面定义一个按钮,并给该按钮使用 v-on 指令绑定单击事件,html代码如下

<input type="button" value="一个按钮" v-on:click="show()">//如果show函数有参还需要传递参数

而使用 v-on 时还可以使用简化的写法,将 v-on: 替换成 @,html代码如下

<input type="button" value="一个按钮" @click="show()">

注意:v-on: 后面的事件名称是之前原生事件属性名去掉on。

例如:

  • 单击事件 : 事件属性名是 onclick,而在vue中使用是 v-on:click
  • 失去焦点事件:事件属性名是 onblur,而在vue中使用时 v-on:blur

在项目下创建03-vue-on.html,编写代码:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<div id="app"><input type="button" value="一个按钮" v-on:click="show()"><br><input type="button" value="一个按钮" @click="show()">
</div>
<script src="js/vue.js"></script>
<script>new Vue({el:"#app",methods:{show(){alert("我被点了...");}}});
</script>
</body>
</html>

1.3.3 条件判断指令

在项目下创建04-vue-if.html,编写代码:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<div id="app"><div v-if="count == 1">div1</div><div v-else-if="count == 2">div2</div><div v-else>div3</div><hr><div v-show="count == 2">div v-show</div><br><input v-model="count">
</div>
<script src="js/vue.js"></script>
<script>new Vue({el:"#app",//定义一个数据模型data(){return {count:2}}});
</script>
</body>
</html>

打开浏览器进行测试,发现 v-showv-if 效果一样,那它们到底有什么区别呢?我们根据浏览器的检查功能查看源代码

在这里插入图片描述

通过上图可以看出 v-show 不展示的原理是给对应的标签添加 display css属性,并将该属性值设置为 none ,这样就达到了隐藏的效果。而 v-if 指令是条件不满足时根本就不会渲染。

1.3.4 v-for 指令

这个指令是用来遍历的,该指令使用的格式如下:

<标签 v-for="变量名 in 集合模型数据">{{变量名}}
</标签>

如果在页面需要使用到集合模型数据的索引,就需要使用如下格式:

<标签 v-for="(变量名,索引变量) in 集合模型数据"><!--索引变量是从0开始,所以要表示序号的话,需要手动的加1-->{{索引变量 + 1}} {{变量名}}
</标签>

在项目下创建05-vue-for.html,编写代码:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<div id="app"><div v-for="addr in addrs">{{addr}} <br></div><hr><div v-for="(addr,i) in addrs">{{i+1}}--{{addr}} <br></div>
</div>
<script src="js/vue.js"></script>
<script>new Vue({el:"#app",data(){return {addrs:["北京","上海","西安"]}}});
</script>
</body>
</html>
  • 注意:需要循环哪个标签,v-for 指令就写在那个标签上

    • 就该案例来说,v-for指令放在了div标签上,所以div标签就复制了三次

    在这里插入图片描述

1.4 生命周期

生命周期的八个阶段:每触发一个生命周期事件,会自动执行一个生命周期方法,这些生命周期方法也被称为钩子方法。

在这里插入图片描述

下图是 Vue 官网提供的从创建 Vue 到效果 Vue 对象的整个过程及各个阶段对应的钩子函数

在这里插入图片描述

看到上面的图,大家无需过多的关注这张图。这些钩子方法我们只关注 mounted 就行了。

mounted:挂载完成,Vue初始化成功,HTML页面渲染成功。而以后我们会在该方法中发送异步请求,加载数据。

先初步认识一下该方法:在项目下创建06-vue-生命周期.html,编写代码:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<div id="app">
</div>
<script src="js/vue.js"></script>
<script>new Vue({el:"#app",/*mounted:function () {}*/mounted(){alert("加载完成...")}});
</script>
</body>
</html>

2,Element

Element:是饿了么公司前端开发团队提供的一套基于 Vue 的网站组件库,用于快速构建网页。

Element 提供了很多组件(组成网页的部件)供我们使用。例如 超链接、按钮、图片、表格等等~

如下图左边的是我们编写页面看到的按钮,上图右边的是 Element 提供的页面效果,效果一目了然。

在这里插入图片描述

我们学习 Element 其实就是学习怎么从官网拷贝组件到我们自己的页面并进行修改,官网网址是

https://element.eleme.cn/#/zh-CN

2.1 快速入门

  1. element-ui 文件夹直接拷贝到项目的 webapp 下。目录结构如下

在这里插入图片描述

  1. 创建页面,并在页面引入Element 的css、js文件 和 Vue.js

    <script src="vue.js"></script>
    <script src="element-ui/lib/index.js"></script>
    <link rel="stylesheet" href="element-ui/lib/theme-chalk/index.css">
    
  2. .创建Vue核心对象

    Element 是基于 Vue 的,所以使用Element时必须要创建 Vue 对象

    <script>new Vue({el:"#app"})
    </script>
    
  3. 官网复制Element组件代码

在项目下创建07-Element-demo1.html,编写代码:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<div id="app"><el-row><el-button>默认按钮</el-button><el-button type="primary">主要按钮</el-button><el-button type="success">成功按钮</el-button><el-button type="info">信息按钮</el-button><el-button type="warning">警告按钮</el-button><el-button type="danger">删除</el-button></el-row><el-row><el-button plain>朴素按钮</el-button><el-button type="primary" plain>主要按钮</el-button><el-button type="success" plain>成功按钮</el-button><el-button type="info" plain>信息按钮</el-button><el-button type="warning" plain>警告按钮</el-button><el-button type="danger" plain>危险按钮</el-button></el-row><el-row><el-button round>圆角按钮</el-button><el-button type="primary" round>主要按钮</el-button><el-button type="success" round>成功按钮</el-button><el-button type="info" round>信息按钮</el-button><el-button type="warning" round>警告按钮</el-button><el-button type="danger" round>危险按钮</el-button></el-row><el-row><el-button icon="el-icon-search" circle></el-button><el-button type="primary" icon="el-icon-edit" circle></el-button><el-button type="success" icon="el-icon-check" circle></el-button><el-button type="info" icon="el-icon-message" circle></el-button><el-button type="warning" icon="el-icon-star-off" circle></el-button><el-button type="danger" icon="el-icon-delete" circle></el-button></el-row>
</div>
<script src="js/vue.js"></script>
<script src="element-ui/lib/index.js"></script>
<link rel="stylesheet" href="element-ui/lib/theme-chalk/index.css">
<script>new Vue({el:"#app"})
</script>
</body>
</html>

2.2 Element 布局

Element 提供了两种布局方式,分别是:

  • Layout 布局
  • Container 布局容器

2.2.1 Layout 局部

通过基础的 24 分栏,迅速简便地创建布局。也就是默认将一行分为 24 栏,根据页面要求给每一列设置所占的栏数。

在这里插入图片描述

在左菜单栏找到 Layout 布局 ,然后找到自己喜欢的按钮样式,点击 显示代码 ,在下面就会展示出对应的代码,显示出的代码中有样式,有html标签。将样式拷贝我们自己页面的 head 标签内,将html标签拷贝到 <div id="app"></div> 标签内

在项目下创建08-Element-布局.html,编写代码:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style>.el-row {margin-bottom: 20px;}.el-col {border-radius: 4px;}.bg-purple-dark {background: #99a9bf;}.bg-purple {background: #d3dce6;}.bg-purple-light {background: #e5e9f2;}.grid-content {border-radius: 4px;min-height: 36px;}.row-bg {padding: 10px 0;background-color: #f9fafc;}</style>
</head>
<body>
<div id="app"><el-row><el-col :span="24"><div class="grid-content bg-purple-dark"></div></el-col></el-row><el-row><el-col :span="12"><div class="grid-content bg-purple"></div></el-col><el-col :span="12"><div class="grid-content bg-purple-light"></div></el-col></el-row><el-row><el-col :span="8"><div class="grid-content bg-purple"></div></el-col><el-col :span="8"><div class="grid-content bg-purple-light"></div></el-col><el-col :span="8"><div class="grid-content bg-purple"></div></el-col></el-row><el-row><el-col :span="6"><div class="grid-content bg-purple"></div></el-col><el-col :span="6"><div class="grid-content bg-purple-light"></div></el-col><el-col :span="6"><div class="grid-content bg-purple"></div></el-col><el-col :span="6"><div class="grid-content bg-purple-light"></div></el-col></el-row><el-row><el-col :span="4"><div class="grid-content bg-purple"></div></el-col><el-col :span="4"><div class="grid-content bg-purple-light"></div></el-col><el-col :span="4"><div class="grid-content bg-purple"></div></el-col><el-col :span="4"><div class="grid-content bg-purple-light"></div></el-col><el-col :span="4"><div class="grid-content bg-purple"></div></el-col><el-col :span="4"><div class="grid-content bg-purple-light"></div></el-col></el-row>
</div>
<script src="js/vue.js"></script>
<script src="element-ui/lib/index.js"></script>
<link rel="stylesheet" href="element-ui/lib/theme-chalk/index.css"><script>new Vue({el:"#app"})
</script>
</body>
</html>

现在需要添加一行,要求该行显示8个格子,通过计算每个格子占 3 栏,具体的html 代码如下

<!--
添加一行,8个格子  24/8 = 3
-->
<el-row><el-col :span="3"><div class="grid-content bg-purple"></div></el-col><el-col :span="3"><div class="grid-content bg-purple-light"></div></el-col><el-col :span="3"><div class="grid-content bg-purple"></div></el-col><el-col :span="3"><div class="grid-content bg-purple-light"></div></el-col><el-col :span="3"><div class="grid-content bg-purple"></div></el-col><el-col :span="3"><div class="grid-content bg-purple-light"></div></el-col><el-col :span="3"><div class="grid-content bg-purple"></div></el-col><el-col :span="3"><div class="grid-content bg-purple-light"></div></el-col>
</el-row>

2.2.2 Container 布局容器

用于布局的容器组件,方便快速搭建页面的基本结构。如下图就是布局容器效果。

如下图是官网提供的 Container 布局容器实例:

在这里插入图片描述

该效果代码中包含了样式、页面标签、模型数据。将里面的样式 <style> 拷贝到我们自己页面的 head 标签中;将html标签拷贝到 <div id="app"></div> 标签中,再将数据模型拷贝到 vue 对象的 data()

在项目下创建09-Element-布局2.html,编写代码:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style>.el-header {background-color: #B3C0D1;color: #333;line-height: 60px;}.el-aside {color: #333;}</style>
</head>
<body>
<div id="app"><el-container style="height: 500px; border: 1px solid #eee"><el-aside width="200px" style="background-color: rgb(238, 241, 246)"><el-menu :default-openeds="['1', '3']"><el-submenu index="1"><template slot="title"><i class="el-icon-message"></i>导航一</template><el-menu-item-group><template slot="title">分组一</template><el-menu-item index="1-1">选项1</el-menu-item><el-menu-item index="1-2">选项2</el-menu-item></el-menu-item-group><el-menu-item-group title="分组2"><el-menu-item index="1-3">选项3</el-menu-item></el-menu-item-group><el-submenu index="1-4"><template slot="title">选项4</template><el-menu-item index="1-4-1">选项4-1</el-menu-item></el-submenu></el-submenu><el-submenu index="2"><template slot="title"><i class="el-icon-menu"></i>导航二</template><el-submenu index="2-1"><template slot="title">选项1</template><el-menu-item index="2-1-1">选项1-1</el-menu-item></el-submenu></el-submenu><el-submenu index="3"><template slot="title"><i class="el-icon-setting"></i>导航三</template><el-menu-item-group><template slot="title">分组一</template><el-menu-item index="3-1">选项1</el-menu-item><el-menu-item index="3-2">选项2</el-menu-item></el-menu-item-group><el-menu-item-group title="分组2"><el-menu-item index="3-3">选项3</el-menu-item></el-menu-item-group><el-submenu index="3-4"><template slot="title">选项4</template><el-menu-item index="3-4-1">选项4-1</el-menu-item></el-submenu></el-submenu></el-menu></el-aside><el-container><el-header style="text-align: right; font-size: 12px"><el-dropdown><i class="el-icon-setting" style="margin-right: 15px"></i><el-dropdown-menu slot="dropdown"><el-dropdown-item>查看</el-dropdown-item><el-dropdown-item>新增</el-dropdown-item><el-dropdown-item>删除</el-dropdown-item></el-dropdown-menu></el-dropdown><span>王小虎</span></el-header><el-main><el-table :data="tableData"><el-table-column prop="date" label="日期" width="140"></el-table-column><el-table-column prop="name" label="姓名" width="120"></el-table-column><el-table-column prop="address" label="地址"></el-table-column></el-table></el-main></el-container></el-container>
</div>
<script src="js/vue.js"></script>
<script src="element-ui/lib/index.js"></script>
<link rel="stylesheet" href="element-ui/lib/theme-chalk/index.css"><script>new Vue({el:"#app",data() {const item = {date: '2016-05-02',name: '王小虎',address: '上海市普陀区金沙江路 1518 弄'};return {tableData: Array(20).fill(item)}}})
</script>
</body>
</html>

2.3 案例

其他的组件我们通过完成一个页面来学习。

我们要完成如下页面效果

在这里插入图片描述

要完成该页面,我们需要先对这个页面进行分析,看页面由哪儿几部分组成,然后到官网进行拷贝并修改。页面总共有如下组成部分

在这里插入图片描述

还有一个是当我们点击 新增 按钮,会在页面正中间弹出一个对话框,如下

在这里插入图片描述

2.3.1 准备基本页面

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<div id="app"></div><script src="js/vue.js"></script>
<script src="element-ui/lib/index.js"></script>
<link rel="stylesheet" href="element-ui/lib/theme-chalk/index.css"><script>new Vue({el: "#app"})
</script>
</body>
</html>

2.3.2 完成表格展示

使用 Element 整体的思路就是 拷贝 + 修改

2.3.2.1 拷贝

在这里插入图片描述

在左菜单栏找到 Table 表格并点击,右边主体就会定位到表格这一块,找到我们需要的表格效果(如上图),点击 显示代码 就可以看到这个表格的代码了。

将html标签拷贝到 <div id="app"></div> 中,如下:

在这里插入图片描述

将css样式拷贝到我们页面的 head 标签中,如下

在这里插入图片描述

将方法和模型数据拷贝到 Vue 对象指定的位置

在这里插入图片描述

拷贝完成后通过浏览器打开可以看到表格的效果

在这里插入图片描述

表格效果出来了,但是显示的表头和数据并不是我们想要的,所以接下来就需要对页面代码进行修改了。

2.3.2.2 修改
  1. 修改表头和数据

    下面是对表格代码进行分析的图解。根据下图说明修改自己的列数和列名

在这里插入图片描述

修改完页面后,还需要对绑定的模型数据进行修改,下图是对模型数据进行分析的图解

在这里插入图片描述

  1. 给表格添加操作列

    从之前的表格拷贝一列出来并对其进行修改。按钮是从官网的 Button 按钮 组件中拷贝并修改的

在这里插入图片描述

  1. 给表格添加复选框列和标号列

    给表格添加复选框和标号列,效果如下

在这里插入图片描述

此效果也是从 Element 官网进行拷贝,先找到对应的表格效果,然后将其对应代码拷贝到我们的代码中,如下是复选框列官网效果图和代码

在这里插入图片描述

这里需要注意在 <el-table> 标签上有一个事件 @selection-change="handleSelectionChange" ,这里绑定的函数也需要从官网拷贝到我们自己的页面代码中,函数代码如下:

在这里插入图片描述

从该函数中又发现还需要一个模型数据 multipleSelection ,所以还需要定义出该模型数据

标号列也用同样的方式进行拷贝并修改:

在这里插入图片描述

2.3.3 完成搜索表单展示

在 Element 官网找到横排的表单效果,然后拷贝代码并进行修改

在这里插入图片描述

点击上面的 显示代码 后,就会展示出对应的代码,下面是对这部分代码进行分析的图解

在这里插入图片描述

然后根据我们要的效果修改代码:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.3.4 完成批量删除和新增按钮展示

从 Element 官网找具有着色效果的按钮,并将代码拷贝到我们自己的页面上

在这里插入图片描述

2.3.5 完成对话框展示

在 Element 官网找对话框,如下:

在这里插入图片描述

下面对官网提供的代码进行分析

在这里插入图片描述

上图分析出来的模型数据需要在 Vue 对象中进行定义。

2.3.6 完成分页条展示

在 Element 官网找到 Pagination 分页 ,在页面主体部分找到我们需要的效果,如下

在这里插入图片描述

点击 显示代码 ,找到 完整功能 对应的代码,接下来对该代码进行分析

在这里插入图片描述

上面代码属性说明:

  • page-size :每页显示的条目数

  • page-sizes : 每页显示个数选择器的选项设置。

    :page-sizes="[100,200,300,400]" 对应的页面效果如下:

在这里插入图片描述

  • currentPage :当前页码。我们点击那个页码,此属性值就是几。
  • total :总记录数。用来设置总的数据条目数,该属性设置后, Element 会自动计算出需分多少页并给我们展示对应的页码。

事件说明:

  • size-change :pageSize 改变时会触发。也就是当我们改变了每页显示的条目数后,该事件会触发。
  • current-change :currentPage 改变时会触发。也就是当我们点击了其他的页码后,该事件会触发。

2.3.7 完整页面代码

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title><style>.el-table .warning-row {background: oldlace;}.el-table .success-row {background: #f0f9eb;}</style>
</head>
<body>
<div id="app"><!--搜索表单--><el-form :inline="true" :model="brand" class="demo-form-inline"><el-form-item label="当前状态"><el-select v-model="brand.status" placeholder="当前状态"><el-option label="启用" value="1"></el-option><el-option label="禁用" value="0"></el-option></el-select></el-form-item><el-form-item label="企业名称"><el-input v-model="brand.companyName" placeholder="企业名称"></el-input></el-form-item><el-form-item label="品牌名称"><el-input v-model="brand.brandName" placeholder="品牌名称"></el-input></el-form-item><el-form-item><el-button type="primary" @click="onSubmit">查询</el-button></el-form-item></el-form><!--按钮--><el-row><el-button type="danger" plain>批量删除</el-button><el-button type="primary" plain @click="dialogVisible = true">新增</el-button></el-row><!--添加数据对话框表单--><el-dialogtitle="编辑品牌":visible.sync="dialogVisible"width="30%"><el-form ref="form" :model="brand" label-width="80px"><el-form-item label="品牌名称"><el-input v-model="brand.brandName"></el-input></el-form-item><el-form-item label="企业名称"><el-input v-model="brand.companyName"></el-input></el-form-item><el-form-item label="排序"><el-input v-model="brand.ordered"></el-input></el-form-item><el-form-item label="备注"><el-input type="textarea" v-model="brand.description"></el-input></el-form-item><el-form-item label="状态"><el-switch v-model="brand.status"active-value="1"inactive-value="0"></el-switch></el-form-item><el-form-item><el-button type="primary" @click="addBrand">提交</el-button><el-button @click="dialogVisible = false">取消</el-button></el-form-item></el-form></el-dialog><!--表格--><template><el-table:data="tableData"style="width: 100%":row-class-name="tableRowClassName"@selection-change="handleSelectionChange"><el-table-columntype="selection"width="55"></el-table-column><el-table-columntype="index"width="50"></el-table-column><el-table-columnprop="brandName"label="品牌名称"align="center"></el-table-column><el-table-columnprop="companyName"label="企业名称"align="center"></el-table-column><el-table-columnprop="ordered"align="center"label="排序"></el-table-column><el-table-columnprop="status"align="center"label="当前状态"></el-table-column><el-table-columnalign="center"label="操作"><el-row><el-button type="primary">修改</el-button><el-button type="danger">删除</el-button></el-row></el-table-column></el-table></template><!--分页工具条--><el-pagination@size-change="handleSizeChange"@current-change="handleCurrentChange":current-page="currentPage":page-sizes="[5, 10, 15, 20]":page-size="5"layout="total, sizes, prev, pager, next, jumper":total="400"></el-pagination></div>
<script src="js/vue.js"></script>
<script src="element-ui/lib/index.js"></script>
<link rel="stylesheet" href="element-ui/lib/theme-chalk/index.css">
<script>new Vue({el: "#app",methods: {tableRowClassName({row, rowIndex}) {if (rowIndex === 1) {return 'warning-row';} else if (rowIndex === 3) {return 'success-row';}return '';},// 复选框选中后执行的方法handleSelectionChange(val) {this.multipleSelection = val;console.log(this.multipleSelection)},// 查询方法onSubmit() {console.log(this.brand);},// 添加数据addBrand(){console.log(this.brand);},//分页handleSizeChange(val) {console.log(`每页 ${val}`);},handleCurrentChange(val) {console.log(`当前页: ${val}`);}},data() {return {// 当前页码currentPage: 4,// 添加数据对话框是否展示的标记dialogVisible: false,// 品牌模型数据brand: {status: '',brandName: '',companyName: '',id:"",ordered:"",description:""},// 复选框选中数据集合multipleSelection: [],// 表格数据tableData: [{brandName: '华为',companyName: '华为科技有限公司',ordered: '100',status: "1"}, {brandName: '华为',companyName: '华为科技有限公司',ordered: '100',status: "1"}, {brandName: '华为',companyName: '华为科技有限公司',ordered: '100',status: "1"}, {brandName: '华为',companyName: '华为科技有限公司',ordered: '100',status: "1"}]}}})
</script>
</body>
</html>

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

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

相关文章

Spring 注解

事务注解 使用注解 EnableTransactionManagement 开启事务支持后&#xff0c;然后在访问数据库的Service方法上添加注解 Transactional 便可 * EnableTransactionManagement&#xff0c;会额外加载 4 个 bean * BeanFactoryTransactionAttributeSourceAdvisor 事务切面类 …

C# ASP.NET Web Core API (.NET 6.0)

目录 一、简介 二、创建项目 三、启动项目 四、开放访问权限 五、添加其他的API 结束 一、简介 ASP.NET Core Web API 是 ASP.NET Core MVC 的一个功能。ASP.NET Core MVC 包含了对 Web API 的支持。可以构建多种客户端的 HTTP 服务。ASP.NET Core Web API可用于在 .NET…

LeetCode 0328. 奇偶链表

【LetMeFly】328.奇偶链表 力扣题目链接&#xff1a;https://leetcode.cn/problems/odd-even-linked-list/ 给定单链表的头节点 head &#xff0c;将所有索引为奇数的节点和索引为偶数的节点分别组合在一起&#xff0c;然后返回重新排序的列表。 第一个节点的索引被认为是 奇…

8-Arm PEG-ACA,8-Arm PEG-Acrylamide,八臂-聚乙二醇-丙烯酰胺可用于自由基引发剂

一&#xff1a;产品描述 1、名称 英文&#xff1a; 8-Arm PEG-ACA 8-Arm PEG-Acrylamide 中文&#xff1a; 八臂-聚乙二醇-ACA 2、CAS编号&#xff1a;N/A 3、所属分类&#xff1a;Acrylate/Acrylamide PEG Multi-arm PEGs 4、分子量&#xff1a;可定制 5、质量控制&a…

C++之模拟实现<unordered_set/map>及位图和布隆过滤器

目录&#x1f308;前言&#x1f681;1、哈希表的改造&#x1f682;2、模拟实现的完整代码&#x1f683;3、哈希表的应用&#x1f684;3.1、位图的概念&#x1f685;3.2、位图的实现&#x1f686;3.3、位图完整代码&#x1f689;3.4、位图的应用&#x1f687;4、位图的变形&…

qt中的qmake.conf文件

qmake.conf文件是qt用于存放系统平台和编译器相关默认值的配置文件。qt为所支持的各种系统平台和对应编译器附加了相关的配置文件。其位置在QtInstallDIr/Qt5.12.0\5.12.0\msvc2015_64\mkspecs中。 windows台式机系统的默认配置​​​​​​这里的每一个文件夹代表一个qt所支…

医美企业如何玩转私域流量?

医美企业普遍面临的难点 广告投放成本高、客户到店率低、投入产出不成正比&#xff0c;是医美行业的“难隐之痛”。不少医美机构开始布局私域的精细化运营。但不是每个医美机构都能做好&#xff0c;有的机构做私域&#xff0c;复购翻几倍&#xff1b;也有的机构对私域理解还停…

比特币和以太坊抹去早些时候的收益,这就是为什么

随着美元指数 (DXY) 跃升至 20 的 112.87 年高点&#xff0c;加密市场出现了突然的自由落体。 最佳 cryptocurrencies 包括比特币&#xff08;BTC&#xff09;和以太坊&#xff08;ETH&#xff09;在内的一个小时内下跌超过2%。 ​比特币交易价格超过 19 万美元&#xff0c;但…

【HTML——奇幻撕布】(效果+代码)

效果展示 有强迫症的朋友可能会挺喜欢这个的 ~ 代码 下面即为全部源代码: 奇幻撕布.html <!doctype html> <html lang="en">

【Spring Boot 集成应用】 OAUTH2统一认证单点登录中的各种模式说明

1. OAUTH2统一认证介绍 OAuth 2.0 是一个行业的标准授权协议。OAuth 2.0 专注于简化客户端开发人员&#xff0c;同时为 Web 应用程序&#xff0c;桌面应用程序&#xff0c;手机等各种设备接入提供特定的授权流程。 2. 传统登陆认证 传统登陆方式是在每个服务进行登陆认证&am…

mqtt报文逐条解析

文章目录1、背景说明2、mqtt报文解析3、剩余长度计算4、构建connect报文5、CONNACK报文示例6、心跳PING报文7、心跳回应PINGRESP报文8、断开连接DISCONNECT报文9、订阅请求SUBSCRIBE10、订阅请求确认SUBACK11、取消订阅UNSUBSCRIBE12、取消订阅确认UNSUBACK13、发布消息PUBLISH…

element-ui源码分析:剖析el-tree源码,看看实现一个树组件有多么复杂(1)

elment-ui中tree木块相关文件如下图&#xff1a; 下图梳理一下各个文件之间的引用关系&#xff08;箭头的方向表示使用&#xff09; 1 uti.js 1.1 markNodeData 标记节点 export const NODE_KEY $treeNodeId;export const markNodeData function(node, data) {if (!data ||…

java集合专题Set接口及HashSet/LinkedHashSet使用方法底层结构及源码分析

Set接口及常用方法 我们主要学习Set接口下的HashSet/TreeSet/LinkedHashSet这3个Set的实现类! 并且通过源码的方式学习其底层结构分析源码和他们的扩容方式! Set特点: 无序,保存顺序和取出顺序不一致不允许重复值, 可以保存null值! Set接口下的常用方法 Set接口实现了Collec…

307. 区域和检索 - 数组可修改

文章目录分析常规做法线段树解法与其结构线段树的构建线段树的区域查询线段树的更新线段树的时间复杂度拓展阅读分析 原题油管讲解线段树做法 常规做法 brute force的做法是&#xff0c;更新时直接在数组原地更新&#xff0c;而求区域和时逐元素相加&#xff0c;时间复杂度为…

多测师肖sir_高级讲师_第2个月第8讲解类

Python中的类与对象 &#xff08;1&#xff09;类(class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对 象所共有的属性和方法。对象是类的实例。 案例&#xff1a;人类xiu&#xff08;对象&#xff09; &#xff08;2&#xff09;实例化&#xff1a;创…

使用docker-compose搭建高可用Apollo配置中心

使用docker-compose搭建高可用Apollo配置中心搭建学习环境编写docker-compose脚本创建script目录&#xff0c;并导入sql脚本执行docker-compose创建容器初始化环境创建测试应用启动demo&#xff0c;测试拉取配置添加依赖添加配置应用配置启动如下搭建高可用生产环境搭建mysql创…

Rosjava SLAM - Android APP 历程

目标 能在有一个Android APP的界面控制机器运行。 如&#xff1a;转&#xff1a; 机器人控制 &#xff1a; SLAM - Android APP_Lan.W的博客-CSDN博客如果选择&#xff0c;按下录制按钮时相机流将按照设置要求打开&#xff0c;相机流预览窗口将实时显示相机画面&#xff0c;得…

虚拟实习项目技术架构mal总结

mogodb闪退 各种插件和启动 mall文档 先要敲定技术架构版本才能编写代码,否则可能全部重来。 1.先技术2.再业务 先给请求加以及生成的token oauth2源码分析 教程

89-JavaIO流(概述、分类、体系)、字节输入和输出流(使用、案例-文件拷贝)

IO流 一、概述 IO流也称为输入、输出流&#xff0c;就是用来读写数据的。 比如我们玩过的消消乐游戏&#xff0c;这个游戏需要将分数展示出来给玩家看&#xff0c;当玩家的下一次分数超过上一次分数的时候&#xff0c;需要将新分数存到内存中&#xff0c;这就是数据的读写操作…

决策树、Hunt算法、泛化定理

决策树——Hunt’s algorithm&#xff08;贪心&#xff09; 红色语句加上后减轻过拟合&#xff0c;下边的GINI系数解决 Hunt’s algorithm 第五行如何寻找最好的划分方法 GINI Index 1减训练集S中yes占比和no占比的平方和&#xff0c;取值范围0-0.5 GINI(S)1−(py2pn2)GINI(S…