Vue 中的 v - if 和 v - show + v-for

v-if   v-show

v-if是动态的向DOM树内添加或者删除DOM元素;

  1. v-if和v-show 都可以控制显示隐藏
  2. v-if 它是没有加载DOM结构 可以叫做惰性加载
<div id="app"><h1 v-if=‘true‘>{{msg1}}</h1> <span>显示</span> <br><h1 v-if=‘false‘>{{msg2}}</h1> <span>不显示</span> <br><h1 v-if=‘flag‘>{{msg1}}</h1> <span>显示</span> <br><h1 v-if=‘!flag‘>{{msg2}}</h1> <span>不显示</span> <br>

<hr><!-- v-if 和 v-else必须同时使用 中间不能夹杂其他内容 --><h1 v-if=‘dataList.length==0‘>暂无数据</h1><!-- <p>55555</p>  不可以有其他标签 --><h1 v-else>{{dataList[0].song}}</h1><!-- <h1 v-if=‘dataList.length!=0‘>{{dataList[0].song}}</h1>   下山  --></div><script>
         new Vue({
             el: ‘#app‘,
             data: { //属性想要渲染 必须先定义 只能写在data里面
                 msg1: ‘采菊东篱下‘,
                 msg2: ‘悠然见南山‘,
                 msg3: ‘晨兴理荒秽‘,
                 msg4: ‘带月荷锄归‘,
                 dataList: [{
                     song: ‘下山‘
                 }],
                 flag: true
             }
         })
     </script>

v-show是通过设置DOM元素的display样式属性控制显隐;

  1. v-show 它在行内样式上添加了 display:none 来隐藏信息
 <div id="app">
         <h1 v-show=‘true‘>{{msg3}}</h1> <span>显示</span> <br>
         <h1 v-show=‘false‘>{{msg4}}</h1> <span>不显示</span> <br>
         <hr>
         <h1 v-show=‘flag‘>{{msg3}}</h1> <span>显示</span> <br>
         <h1 v-show=‘!flag‘>{{msg4}}</h1> <span>不显示</span> <br>
         <hr>
     </div>
     <script>
         new Vue({
             el: ‘#app‘,
             data: { //属性想要渲染 必须先定义 只能写在data里面
                 msg1: ‘采菊东篱下‘,
                 msg2: ‘悠然见南山‘,
                 msg3: ‘晨兴理荒秽‘,
                 msg4: ‘带月荷锄归‘,
                 dataList: [{
                     song: ‘下山‘
                 }],
                 flag: true
             }
         })
     </script>

事件方法

v-on: 简写成@ 比如 @click @blur @keydown

 <!-- 在vue中如果不传参数的情况下 那么事件方法名后面的小括号 可写可不写
    v-on:  可以简写成@        @blur是当元素失去焦点时所触发的事件
 -->
    <div id="app">
        <!-- <button v-on:click=‘getShow‘>点击我有惊喜</button> -->
        <button v-on:click=‘getShow()‘>点击我有惊喜</button>
        <h1 v-show=‘isShow‘>{{msg}}</h1>
        <button @click=‘postData("参数")‘>点击我传参数</button>
        <h2 @click=‘getD‘>我也可以被点击奥</h2>
    </div>
    <script>
        new Vue({
            el:‘#app‘,//元素
            data:{//属性
               msg:‘春风不度玉门关‘,
               isShow:true
            },
            methods: {//方法
                //第一种写法
               getShow:function(){
                   //this代表当前vue实例
                   console.log(this,"我被触发了")
                   //更改了isShow的值
                   this.isShow = !this.isShow
               },
               //第二种写法 推荐用这个方法
               postData(n){
                   console.log(n,‘形参‘)
               },
               //第三种 不可行 this 的指向改变了
               getD:()=>{
                   console.log(this,‘箭头函数被触发‘)
               }
            },
        })
    </script>

v-for 事件循环

详细 的链接【借鉴链接】 :https://www.cnblogs.com/wangyfax/p/10073159.html

 <div id="app">
        <h1>事件循环</h1>
        <ul>
            <li v-for=‘(item,i) in arr ‘>
              {{i+1}}-----  {{item}}
            </li>
        </ul>

        <ul>
            <li v-for=‘(item,a,b) in json‘>
                <!--
                    item 指的是 value
                    a 指的是 key
                    b 是索引
                 -->
                {{item}}----{{a}}----{{b}}
            </li>
        </ul>

    </div>

    <script>
        new Vue({
            el:‘#app‘,
            data:{
               arr:[‘西瓜‘,‘车厘子‘,‘菠萝‘,‘苹果‘],
               json:{
                   name:‘小邓子‘,
                   age:25
               }
            }
        })
    </script>

 <!-- 在v-for中使用了:key=""使得在勾选复选框后不会不随这内容的变动而变动例如在勾选第一个后 添加一个新的内容后后勾线后的复选框不会一直是第一个 -->

   <div id="app">
        <div>
            <!-- 在这里输入 -->
            输入你喜欢的歌单01:<input type="text" v-model="val01">
            <!-- 添加信息 -->
            <button @click="add01"> 添加</button>
        </div>
        <hr>
        <div v-for="item in songList01" :key="item.id">
            <!-- 在v-for中使用了:key=""使得在勾选复选框后不会不随这内容的变动而变动例如在勾选第一个后           添加一个新的内容后后勾线后的复选框不会一直是第一个  -->
            <input type="checkbox"> {{item.songName}}
        </div>
    </div>
    <script>
        new Vue({
            el:"#app",
            data:{
                val01:"",
                unm:"3",
                songList01:[
                    {id:"1",
                    songName:"第一"},
                    {id:"2",
                    songName:"第二"},
                    {id:"3",
                    songName:"第三"},
                ]
            },
            methods:{
                add01(){
                    this.songList01.unshift({id:++this.unm,songName:this.val01});
                },
            },
        })
    </script>

原文地址:https://www.cnblogs.com/3526527690qq/p/12385955.html

时间: 2024-10-10 10:54:16

Vue 中的 v - if 和 v - show + v-for的相关文章

vue中的vue-cli

在前面的学习过程中我相信你们已经对vue有了一定的了解,现在我们来看一下vue中的vue-cli. 学习这个我们首先需要的是node环境的,如果你的网络环境慢的话建议安装淘宝镜像,在cmd中输入 npm install -g cnpm –registry=https://registry.npm.taobao.org 这个命令行,安装,安装之后检查cnpm的版本 cnpm -v 之后创建项目文件进入项目文件中,在comd中下载vue-cli cnpm install vue-cli -g --s

vue中$watch源码阅读笔记

项目中使用了vue,一直在比较computed和$watch的使用场景,今天周末抽时间看了下vue中$watch的源码部分,也查阅了一些别人的文章,暂时把自己的笔记记录于此,供以后查阅: 实现一个简单的$watch: 1 const v = new Vue({ 2 data:{ 3 a: 1, 4 b: { 5 c: 3 6 } 7 } 8 }) 9 // 实例方法$watch,监听属性"a" 10 v.$watch("a",()=>console.log(&

vue 中 直接操作 cookie 及 如何使用工具 js-cookie

vue 中直接操作 cookie 以下3种操作方式 set: function (name, value, days) { var d = new Date; d.setTime(d.getTime() + 24*60*60*1000*days); window.document.cookie = name + "=" + value + ";path=/;expires=" + d.toGMTString(); }, get: function (name) {

vue中动态添加div

知识点:vue中动态添加div节点,点击添加,动态生成div,点击删除,删除对应的div,其中数组的长度是动态改变的,如在from表单中应用,直接在提交方法中,获得list,获取所填的元素即可 效果: 核心代码说明(样式代码可自行修改,详细代码请参照源码): <div v-for="(v,i) in list"> <div class="form-group m-form__group row" style="padding-top: 1

Vue中v-on的指令以及一些其他指令

1.v-on的基本使用 <div id="app"> <!-- 使用事件绑定的简写形式 --> <input type="button" value="按钮" v-on:click="btn"> </div> <script> var vm = new Vue({ el: '#app', //methods是用来专门存放vue的处理方法的 methods: { btn

vue中如何实时修改输入的值

vue中如何实时修改输入的值 经常看到需要对用户输入的值进行实时修改,有时是需要修改为指定的展示内容,有时候是用来校验,禁止用户输入非法数据,总之是一个常见的需求吧,只是自己一直没有特意去关注.思来想去还是有必要了解一下. 操作方法 一直听说各种方式,记得最深的便是利用computed的计算属性,通过set 和 get 来进行修改,其他的也有所见闻.先实现一种,再进行其他其他深究,以及使用好坏. vue文档说明 对于需要使用输入法 (如中文.日文.韩文等) 的语言,你会发现 v-model 不会

vue中使用高德地图

1.安装 cnpm install vue-amap --save 2.main.js 中引入 import VueAMap from 'vue-amap' Vue.use(VueAMap) VueAMap.initAMapApiLoader({ key: '3ebdb3c7a684a4e64f39ddd306056522', plugin: ['AMap.Scale', 'AMap.OverView', 'AMap.ToolBar', 'AMap.MapType', 'AMap.PlaceSe

vue中引入Tinymce富文本编辑器

最近想在项目上引入一个富文本编辑器,之前引入过summernote,感觉并不太适合vue使用, 然后在网上查了查,vue中使用Tinymce比较适合, 首先,我们在vue项目的components文件夹中加入如下几个文件 首先看一下Tinymce/dynamicLoadScript.js的内容: let callbacks = [] function loadedTinymce() { // to fixed https://github.com/PanJiaChen/vue-element-a

解决vue中BMap未定义问题

原文链接: 点我 最近在项目中使用了百度地图来显示物流信息,实现方式有两种: 引用Vue Baidu Map引用BMap存在的问题:\color{red}{存在的问题:}存在的问题::使用BMap可以修改起始点和终点的图标,但是地图需要刷新页面才会显示.针对以上问题,问题的实现如下所示: Vue文件中的代码 <template> <div id="myMap"></div> </template> import qs from "