首页 > 其他分享 >vue之列表渲染v-for

vue之列表渲染v-for

时间:2023-04-06 13:22:41浏览次数:29  
标签:key vue name 渲染 列表 索引 循环 数组 l1

目录

简介

v-for可循环对象:数组,对象,字符串,数字

用法

需要哪个标签循环,就把v-for写到哪个标签上
v-for="xxx in 变量"      这里的xxx in是固定写法,xxx代表一个变量,比如后端的 for i in中的i字母

v-for可循环的几种变量的展示

使用v-for循环“数组,对象,字符串,数字”的方式

数组的循环展示

body:
    <h1>数组的循环</h1>
    <h3 v-for="i in l1">{{i}}</h3>
    <h1>带索引的数组循环</h1>
    <span>如果要打印索引,需要把索引变量放后面,如果有多个变量就使用括号括起来,如下:</span>
    <h3 v-for="(i, index) in l1">索引{{index}}的数字是:{{i}}</h3>

script:
new Vue({
    el: '#app',
    data: {
        l1: [1, 2, 3],
        d1: {name: 'jack', age: 18},
        s1: 'hello world',
        n1: 5
    },
})

显示结果:
image

对象的循环展示

body:
<h1>对象的循环</h1>
<span>默认打印value值,不打印key值</span>
<h3 v-for="i in d1">{{i}}</h3>
<h1>对象带kv的循环</h1>
<span>key变量放后面,value变量放前面</span>
<h3 v-for="(i,key) in d1">key是:{{key}},value是:{{i}}</h3>

script:
new Vue({
    el: '#app',
    data: {
        l1: [1, 2, 3],
        d1: {name: 'jack', age: 18},
        s1: 'hello world',
        n1: 5
    },
})

image

字符串的循环展示

body:
<h1>字符串的循环</h1>
<h3 v-for="i in s1">{{i}}</h3>
<h1>字符串的循环,带索引</h1>
<h3 v-for="(i, index) in s1">索引{{index}}的字符是{{i}}</h3>

script:
new Vue({
    el: '#app',
    data: {
        l1: [1, 2, 3],
        d1: {name: 'jack', age: 18},
        s1: 'hello world',
        n1: 5
    },
})

image

数字的循环展示

body:
<h1>循环数字</h1>
<span>n1变量是5,相当于python的for i in range(5)</span>
<h3 v-for="i in n1">{{i}}</h3>
<h1>循环数字,带索引</h1>
<h3 v-for="(i,index) in n1">索引{{index}}的数字{{i}}</h3>

script:
new Vue({
    el: '#app',
    data: {
        l1: [1, 2, 3],
        d1: {name: 'jack', age: 18},
        s1: 'hello world',
        n1: 5
    },
})

image

v-for搭档key值的说明

v-for在使用时,一般会在循环的标签上增加一个 :key="xxx" 的属性,它的作用是加速虚拟dom的替换。

<script>
// 假如有一个列表 l1=[1,2,3]
<div v-for="i in l1">显示</div>
</script>

上面的代码未使用key属性,说明如下:
此时页面渲染出三个div标签来,但如果我们增加了一个值,比如l1变成了l1=[1,2,3,4],这时vue会把整个页面重新渲染,并加载到页面上。如果我们的代码添加了key属性,如下:

<script>
// 假如有一个列表 l1=[1,2,3]
<div v-for="i in l1" :key={{i}}>显示{{i}}</div>
</script>

此时页面上渲染出三个div标签,如果我们给l1增加一个值,l1=[0,1,2,3,4]后,vue不会重新渲染之前的三个div,只会在对应位置添加一个div标签,这时就节省了很多资源。

js循环几种方式

与vue没有关系

基于索引的循环

<script>
// 基于索引的循环
for (i = 0; i < 5; i++) {
    console.log(i)
}
</script>

image

数组的循环

数组基于索引的循环

<script>
// 数组基于索引的循环
l1 = [3, 4 ,5]
for (i = 0; i < l1.length; i++) {
    console.log(l1[i])
}
</script>

image

数组基于迭代的循环

<script>
// 基于数组的循环
let l1 = [4, 5, 6]
// 注意下面的循环中i是索引,与vue的v-for循环不同v-for="(值, 索引)"
for (i in l1){
    console.log(l1[i])
}
</script>

基于of的循环

此语法是es6才有语法,原来都是for i in xxx,这个是for i of xxx,可以直接显示值

<script>
// 基于数组的of的循环
let l1 = [4, 5, 6]
for(i of l1){
    console.log('数组的for of 循环:', i)
}
</script>

image

数组的方法循环

只有数组有这个方法,其它的对象、字符串、数字等都没有此方法,总的来说就是限“数组”

<script>
// 基于数组的循环
let l1 = [4, 5, 6]
l1.forEach(function (i) {
    console.log('数组的forEach循环:', i)
})
</script>

image

jQuery的循环

<script>
// 基于jQuery的循环
let l1 = [4, 5, 6]
// 注意两个变量是索引在前,值在后
$.each(l1, function (index, item) {
    console.log('值:', item,'索引:', index)
})
</script>

image

点击按钮隐藏/显示列表示例

使用v-for循环显示列表

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="./js/vue.js"></script>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css"
          integrity="sha384-HSMxcRTRxnN+Bdg0JdbxYKrThecOKuH5zCYotlSAcp1+c8xmyTe9GYg1l9a69psu" crossorigin="anonymous">
</head>
<body>
<div id="app">
    <div class="row">
        <div class="container">
            <div class="col-md-6 col-md-offset-3">
                <div class="text-center">
                    <h1>测试v-for渲染</h1>
                    <button @click="handleClick">点我显示</button>
                    <div v-if="show">
                        <div class="bs-example" data-example-id="hoverable-table">
                            <table class="table table-hover">
                                <thead>
                                    <tr>
                                    <th>ID</th>
                                    <th class="text-center">NAME</th>
                                    <th class="text-center">PRICE</th>
                                </tr>
                                </thead>
                                <tbody>
                                <tr v-for="item in good_list">
                                    <th scope="row">{{item.id}}</th>
                                    <td>{{item.name}}</td>
                                    <td>{{item.price}}</td>
                                </tr>
                                </tbody>
                            </table>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>
</body>
<script>
    vm = new Vue({
        el: '#app',
        data: {
            show: false,
            good_list: [
                {id: 1, name: '塞尔达传说:荒野之息', price: '349'},
                {id: 2, name: '塞尔达传说:王国之泪', price: '365'},
                {id: 3, name: '对马岛之魂', price: '450'},
                {id: 4, name: '战神5:诸神黄昏', price: '459'},
                {id: 5, name: '恶魔之魂', price: '420'}
            ],
        },
        methods: {
            handleClick() {
                this.show = !this.show
            }
        }
    })
</script>
</html>

标签:key,vue,name,渲染,列表,索引,循环,数组,l1
From: https://www.cnblogs.com/smyz/p/17292238.html

相关文章

  • 列表中有整数、有特殊字符、有字母的排序问题
    列表中有整数、有特殊字符、有字母a=[2,1,3,5,4,'d','f','e','c','a','b','?','*','&']#定义一个函数defsort1(x):ifisinstance(x,int):  #判断传入的参数中是否有整数returnx #有整数返回整数本身......
  • vue第六课:v-for,v-on补充,v-model
    1,v-for指令根据数据生成列表结构<divid='app'><inputtype="button"value="添加数据"@click="add"><inputtype="button"value="删除数据"@click="remove"><ul><......
  • vue第五课:图片切换实例
    知识点:1,定义图片数组2,添加图片索引3,绑定src属性4,图片切换逻辑需求:第一张图片不显示上一页(隐藏)最后一张图片不显示下一页(隐藏)<divid='app'><img:src="imgarr[index]"><ahref="#"v-show="index!=0"@click="prev"><imgs......
  • vue之条件渲染
    目录说明语法示例说明“vue条件渲染指令包括v-if、v-else、v-else-if、v-show。语法v-if="条件1&&条件2"#条件可以用变量+运算符号表示,&&表示andv-if-else="条件"v-else#因为是例外,所以不需要使用条件示例<body><divid="app"><h1&......
  • vue-生产环境强制开启dev-tool
    由于生产环境中无法启用dev-tool,而一些问题只在生产环境中体现,所以在生产环境中调试vue,我个人认为还是比较有用的,那么怎么在生产环境中启用dev-tools呢,便捷的方法只需要在chrome商店中下载vueforcedev就好啦cheers!!!!......
  • python 列表推导表达式
    如果要对列的每个成员进行指定转换,就可以用列表推导m=[1,2,3,4]n=[]foriinm:#列表迭代n.append(i*60)print(n)#结果:[60,120,180,240]上面的迭代操作就等同于下面这个:m=[1,2,3,4]n=[i*60foriinm]#列表推导,由原来的3行变1行,append操作会自动完成......
  • uni-app:ios/android中的nvue和vue页面加载自定义字体(hbuilderx 3.7.3)
    一,官方文档地址:https://uniapp.dcloud.net.cn/tutorial/nvue-api.html#addrule二,代码1,nvue页面:模板<viewclass="listTitle">{{item.title}}</view>......
  • 我的第一个项目(九) :飞机大战Vue版本塞到主页
    好家伙, 这是未进行分包的vue版本的飞机大战效果如下:  这里说明一下,大概使用逻辑是提供一个<div>然后在这<div>中渲染游戏 游戏主界面代码如下:1<template>2<div>3<h1>欢迎来到主页面</h1>4<divref="stage"></div>5</div......
  • vue excel导入,导出
    @GetMapping("/exportExample")@Inner(false)//publicRexportExample(Integercs,Stringcs2){publicvoidexportExample(MeterWatermeterWater,HttpServletResponseresponse)throwsIOException{//查询所有用户Map<String,......
  • Git命令列表--git-restore
    GitRestore名称git-Restore-恢复工作树文件这个命令是试验性的。其行为可能会改变。语法gitrestore[<options>][--source=<tree>][--staged][--worktree][--]<pathspec>…​gitrestore[<options>][--source=<tree>][--staged][--worktree]--pathspec-fr......