詳解vue中v-for和v-if一起使用的替代方法template
vue中v-for和v-if一起使用的替代方法template
版本
vue 2.9.6
element-ui: 2.15.6
目標(biāo)效果
說(shuō)明
在 vue 2.x 中,在一個(gè)元素上同時(shí)使用 v-if 和 v-for 時(shí),v-for 會(huì)優(yōu)先作用
解決方法
- 選擇性地渲染列表,例如根據(jù)某個(gè)特定屬性(
category
)來(lái)決定不同展示渲染,使用計(jì)算屬性computed 見(jiàn)http://www.dbjr.com.cn/article/247179.htm - 使用
template
占位,將循環(huán)放在template中,v-if作用于元素,此方法script
中不用定義computed方法
核心代碼片段
<div> <el-divider content-position="left">奧迪</el-divider> <template v-for="(item, index) in links"> <el-link type="primary" target="_blank" :href="item.url" :key="index" v-if="item.category==0"> <el-button type="primary">{{item.name}}</el-button> </el-link> </template> <el-divider content-position="left">奔馳</el-divider> <template v-for="(item, index) in links"> <el-link type="primary" target="_blank" :href="item.url" :key="index" v-if="item.category==1"> <el-button type="primary">{{item.name}}</el-button> </el-link> </template> <el-divider content-position="left">寶馬</el-divider> <template v-for="(item, index) in links"> <el-link type="primary" target="_blank" :href="item.url" :key="index" v-if="item.category==2"> <el-button type="primary">{{item.name}}</el-button> </el-link> </template> </div>
Car.vue
<template> <div> <el-row> <el-col :span="24"> <el-form :inline="true" class="user-search"> <el-form-item> <el-button size="small" type="primary" icon="el-icon-plus" @click="handleEdit()" plain>添加鏈接</el-button> </el-form-item> </el-form> <div> <el-divider content-position="left">奧迪</el-divider> <template v-for="(item, index) in links"> <el-link type="primary" target="_blank" :href="item.url" :key="index" v-if="item.category==0"> <el-button type="primary">{{item.name}}</el-button> </el-link> </template> <el-divider content-position="left">奔馳</el-divider> <template v-for="(item, index) in links"> <el-link type="primary" target="_blank" :href="item.url" :key="index" v-if="item.category==1"> <el-button type="primary">{{item.name}}</el-button> </el-link> </template> <el-divider content-position="left">寶馬</el-divider> <template v-for="(item, index) in links"> <el-link type="primary" target="_blank" :href="item.url" :key="index" v-if="item.category==2"> <el-button type="primary">{{item.name}}</el-button> </el-link> </template> </div> <!-- 添加界面 --> <el-dialog :title="title" :visible.sync="editFormVisible" width="30%" @click="closeDialog"> <el-form label-width="120px" :model="editForm" :rules="rules" ref="editForm"> <el-form-item label="鏈接名稱" prop="name"> <el-input size="small" v-model="editForm.name" auto-complete="off" placeholder="請(qǐng)輸入鏈接名稱"></el-input> </el-form-item> <el-form-item label="鏈接地址" prop="url"> <el-input size="small" v-model="editForm.url" auto-complete="off" placeholder="請(qǐng)輸入鏈接地址"></el-input> </el-form-item> </el-form> <div slot="footer" class="dialog-footer"> <el-button size="small" @click="closeDialog">取消</el-button> <el-button size="small" type="primary" :loading="loading" class="title" @click="submitForm('editForm')">保存</el-button> </div> </el-dialog> </el-col> </el-row> </div> </template> <script> import { getLink, saveLink } from '../../api/userMG' export default { data() { return { links: [], loading: false, //顯示加載 editFormVisible: false, //控制添加頁(yè)面顯示與隱藏 title: '添加鏈接', editForm: { name: '', url: '' }, // rules表單驗(yàn)證 rules: { name: [{ required: true, message: '請(qǐng)輸入鏈接名稱', trigger: 'blur' }], url: [{ required: true, message: '請(qǐng)輸入鏈接地址', trigger: 'blur' }] }, } }, created() { // 獲取鏈接 this.getdata() }, // 這下面的方法只有被調(diào)用才會(huì)被執(zhí)行 methods: { // 獲取鏈接 getdata() { this.loading = true getLink().then((response) => { this.loading = false console.log(response.data) this.links = response.data }).catch(error => { console.log(error) }) }, // 添加頁(yè)面方法 handleEdit: function() { this.editFormVisible = true this.title = '添加鏈接', this.editForm.name = '', this.editForm.url = '' }, // 添加保存頁(yè)面方法 submitForm(editData) { this.$refs[editData].validate(valid => { if (valid) { saveLink(this.editForm).then(response => { this.editFormVisible = false this.loading = false // if (response.success) this.getdata() this.$message({ type: 'success', message: '鏈接添加成功' }) }).catch(error => { this.editFormVisible = false this.loading = false // console.log(error.response.data['url'][0]) // console.log(error.response.status) // this.$message.error('鏈接添加失敗,請(qǐng)稍后再試') if (error.response.status == 400 ) { this.$message.error(error.response.data['url'][0]+'如: http://xxx 或 https://xxx') }else { this.$message.error('鏈接添加失敗,請(qǐng)稍后再試') } }) } }) }, // 關(guān)閉添加鏈接窗口 closeDialog() { this.editFormVisible = false } } } </script> <style> /* .el-row { margin-top: 10px; } */ .el-link { margin-right: 5px; } </style>
到此這篇關(guān)于詳解vue中v-for和v-if一起使用的替代方法template的文章就介紹到這了,更多相關(guān)vue 替代方法template內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- vue中v-for和v-if不能在同一個(gè)標(biāo)簽使用的最新解決方案
- 在vue+element-plus中無(wú)法同時(shí)使用v-for和v-if的問(wèn)題及解決方法
- Vue3中v-if和v-for優(yōu)先級(jí)實(shí)例詳解
- Vue中判斷語(yǔ)句與循環(huán)語(yǔ)句基礎(chǔ)用法及v-if和v-for的注意事項(xiàng)詳解
- 詳解為什么Vue中的v-if和v-for不建議一起用
- vue的注意規(guī)范之v-if 與 v-for 一起使用教程
- Vue.js常用指令匯總(v-if、v-for等)
- vue中v-if和v-for一起使用的弊端及解決辦法(同時(shí)使用 v-if 和 v-for不推薦)
相關(guān)文章
vue 屬性攔截實(shí)現(xiàn)雙向綁定的實(shí)例代碼
這篇文章主要介紹了vue 屬性攔截實(shí)現(xiàn)雙向綁定的實(shí)例代碼,代碼簡(jiǎn)答易懂,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2018-10-10vue/cli和vue版本對(duì)應(yīng)及安裝方式
這篇文章主要介紹了vue/cli和vue版本對(duì)應(yīng)及安裝方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10詳解vue-cil和webpack中本地靜態(tài)圖片的路徑問(wèn)題解決方案
這篇文章主要介紹了詳解vue-cil和webpack中本地靜態(tài)圖片的路徑問(wèn)題解決方案,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-09-09vue3.x中useRouter()執(zhí)行后返回值是undefined問(wèn)題解決
這篇文章主要給大家介紹了關(guān)于vue3.x中useRouter()執(zhí)行后返回值是undefined問(wèn)題的解決方法,文中通過(guò)代碼示例介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用vue3.x具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-09-09vue中前進(jìn)刷新、后退緩存用戶瀏覽數(shù)據(jù)和瀏覽位置的實(shí)例講解
今天小編就為大家分享一篇vue中前進(jìn)刷新、后退緩存用戶瀏覽數(shù)據(jù)和瀏覽位置的實(shí)例講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-09-09