首页 >> 大全

一起从零开始学VUE(2)——品牌列表案例

2023-12-15 大全 24 作者:考证青年

文章目录 完整的实现代码

阶段检测——品牌列表案例 要求

实现过程 1、 循环渲染表格行的数据

①在data中定义需要输出的列表

      const vm = new Vue({el:"#app",data:{// 用户输入的品牌名称brand: '',// nextId 是下一个,可用的 idnextId: 4,// 品牌的列表数据list:[{id:1, name:'宝马', status:true, time: new Date()},{id:2, name:'别克', status:true, time: new Date()},{id:3, name:'奔驰', status:true, time: new Date()}]}})

②在tbody中循环渲染表格行的数据(注意:v-for一定要绑定一个:key属性)

<tbody><tr v-for="item in list" :key="item.id"><td>{{ item.id }}td><td>{{ item.name }}td><td>{{item.status}}td><td>{{ item.time }}td><td><a href="javascript:;">删除a>td>tr>
tbody>

③利用双向数据绑定指令来控制的状态,使用v-if条件渲染指令来控制标签中的内容

<tbody><tr v-for="item in list" :key="item.id"><td>{{ item.id }}td><td>{{ item.name }}td><td><div class="custom-control custom-switch"><input type="checkbox"  class="custom-control-input" v-model="item.status"><label class="custom-control-label"  v-if="item.status">已启用label><label class="custom-control-label"  v-else>已禁用label>div>td><td>{{ item.time }}td><td><a href="javascript:;">删除a>td>tr>
tbody>

一起从零开始学VUE(2)——品牌列表案例_一起从零开始学VUE(2)——品牌列表案例_

通过这一步大致的框架就已经完成了

2、动态生成的id值

上一步中基本的框架已经实现了,但是状态那边点击却没有反应。这边我们需要复习一下label的for属性。

label的for属性规定label与哪个表单元素绑定,这样子是为了扩大点击响应的范围,从而提高用户体验

(没有使用for属性)

(使用for属性)

通过对比,我们可以看出,不使用for属性进行绑定的话,我们必须点击才能进行响应,这样的用户体验是稍微差点的,而使用了for属性,当点击男/女的时候也可以改变的状态。

了解完后,我们就可以对上一步代码进行修改

一起从零开始学VUE(2)——品牌列表案例_一起从零开始学VUE(2)——品牌列表案例_

<tbody><tr v-for="item in list" :key="item.id"><td>{{ item.id }}td><td>{{ item.name }}td><td><div class="custom-control custom-switch"><input type="checkbox"  class="custom-control-input"  :id="'id'+item.id" v-model="item.status"><label class="custom-control-label"  :for="'id'+item.id" v-if="item.status">已启用label><label class="custom-control-label"  :for="'id'+item.id" v-else>已禁用label>div>td><td>{{ item.time }}td><td><a href="javascript:;">删除a>td>tr>
tbody>

3、实现删除品牌的功能

上面两种方法东可以实现删除操作,这边使用第一种方法

<td><a href="javascript:;" @click="remove(item.id)">删除a>td>methods:{remove(id){var index = this.list.findIndex(item => {if (item.id == id){ return true;}})this.list.splice(index,1)}}

4、使用全局过滤器格式化时间

不了解全局过滤器的UU们,可以看这篇博文——>

<td>{{ item.time |  Dateformat}}td>
<script>// 声明格式化时间的全局过滤器 YYYY-MM-DD HH:mm:ssVue.filter('Dateformat',function(time){// 调用dayjs()得到当前时间,dayjs(time)得到指定的时间return dayjs(time).format("YYYY-MM-DD HH:mm:ss")})
script>

完整的实现代码

    <link rel="stylesheet" href="./lib/bootstrap.css"><link rel="stylesheet" href="./css/brandlist.css">head>
<body><div id="app"><div class="card"><div class="card-header">添加品牌div><div class="card-body"><form @submit.prevent="add"><div class="form-row align-items-center"><div class="col-auto"><div class="input-group mb-2"><div class="input-group-prepend"><div class="input-group-text">品牌名称div>div><input type="text" class="form-control" placeholder="请输入品牌名称" v-model.trim="brand">div>div><div class="col-auto"><button type="submit" class="btn btn-primary mb-2">添加button>div>div>form>div><table class="table table-bordered table-hover table-striped"><thead><tr><th>#th><th>品牌名称th><th>状态th><th>创建时间th><th>操作th>tr>thead><tbody><tr v-for="item in list" :key="item.id"><td>{{ item.id }}td><td>{{ item.name }}td><td><div class="custom-control custom-switch"><input type="checkbox"  class="custom-control-input"  :id="'id'+item.id" v-model="item.status"><label class="custom-control-label"  :for="'id'+item.id" v-if="item.status">已启用label><label class="custom-control-label"  :for="'id'+item.id" v-else>已禁用label>div>td><td>{{ item.time |  Dateformat}}td><td><a href="javascript:;" @click="remove(item.id)">删除a>td>tr>tbody>table>div>div><script src="./lib/dayjs.min.js">script><script src="./lib/vue-2.6.12.js">script><script>// 声明格式化时间的全局过滤器 YYYY-MM-DD HH:mm:ssVue.filter('Dateformat',function(time){// 调用dayjs()得到当前时间,dayjs(time)得到指定的时间return dayjs(time).format("YYYY-MM-DD HH:mm:ss")})const vm = new Vue({el:"#app",data:{// 用户输入的品牌名称brand: '',// nextId 是下一个,可用的 idnextId: 4,// 品牌的列表数据list:[{id:1, name:'宝马', status:true, time: new Date()},{id:2, name:'别克', status:true, time: new Date()},{id:3, name:'奔驰', status:true, time: new Date()}]},methods:{remove(id){var index = this.list.findIndex(item => {if (item.id == id){ return true;}})this.list.splice(index,1)}}})script>
body>
html>

tags: vue

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了