A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 不二晨 于 2018-8-15 09:39 编辑


v-if

v-if指令可以完全根据表达式的值在DOM中生成或移除一个元素。书中源码如下:


<template>
<div id="example">
    <p v-if="greeting">Hello</p>
</div>
</template>
<script>
export default {
name:'HelloWorld',
data(){
    return {
   greeting:true
  }
}
}
</script>

我们改变greeting这个字段的值为false,可以看到hello隐藏了起来。

v-show

v-show 指令是根据表达式的值来显示或者隐藏HTML元素。当v-show 赋值为false时,元素将被隐藏。书中代码如下:

<template>
<div id="example">
    <input type="text" v-model="message" placeholder="edit me"/>
    <p v-show="greeting">Hello!</p>
</div>
</template>


<script>
    export default{
        name:'HelloWorld',
        data(){
            return {
                message:'',
                greeting:false
            }
        }
    }
</script>

注:v-if 有更高的切换消耗,而v-show 有更高的初始渲染消耗,因此,如果需要频繁地切换,则使用v-show较好;如果在运行时条件不大可能改变,则使用v-if较好。

v-model

v-model指令用来在input, select, text, checkbox,radio等表单控件元素上创建双向数据绑定。根据控件类型v-model自动选取正确的方法更新元素。代码如下:


<template>
    <div id="example">
        <form>
        姓名:
        <input type="text" v-model="data.name" placeholder=""/>
        <br/>
        性别:
        <input type="radio" id="man" value="One" v-model="data.sex"/>
        <label for="man">男</label>
        <input type="radio" id="male" value="Two" v-model="data.sex"/>
        <label for="male">女</label>
        <br/>
        兴趣:
        <input type="checkbox" id="book" value="book" v-model="data.interest">
        <label for="book">阅读</label>
        <input type="checkbox" id="swim" value="swim" v-model="data.interest">
        <label for="swim">游泳</label>
        <input type="checkbox" id="game" value="game" v-model="data.interest">
        <label for="game">游戏</label>
        <input type="checkbox" id="song" value="song" v-model="data.interest">
        <label for="song">唱歌</label>
        <br/>
        身份:
        <select v-model="data.identity">
            <option value="teacher" selected>教师</option>
            <option value="doctor">医生</option>
            <option value="lawyer">律师</option>
        </select>
        </form>
    </div>  
</template>

<script>
    export default{
        name:'HelloWorld',
        data(){
            return{
                data:{
                    name:"",
            sex:"",
            interest:[],
            identity:''
                }
            }
        }
    }
</script>

number

如果想将用户的输入自动转换为Number类型(如果原值的转换结果为NaN,则返回原值),则可以添加一个number特性。示例代码如下:

<input type ="number" v-model.number= "msg" />
1
注:书中没有源码

lazy

在默认情况下,v-model在input事件中同步输入框的值与数据,我们可以添加一个lazy特性,从而将数据改到change事件中发生。代码如下:

<template>
<div id="example">
<input type = "text" v-model.lazy ="msg"  />
<br/>
{{msg}}
</div>
</template>


<script>
    export default {
        name:'HelloWorld',
        data(){
            return {
                msg:'内容是在change事件后后才改变的~'   

            }
        }
    }

</script>

注:书中3.1.5中关于v-for的代码已经失效,可以使用我贴出来的代码哦

v-for还可以解析字典哦,具体代码如下:

<template>
    <div>
        <ul>
            <li v-for="item in items" >
                <span v-for="(value, key) in item">{{key}} : {{value}} </span>
             </li>
        </ul>
    </div>
</template>
<script>


    export default{
        name:'HelloWorld',
        data(){

            return {
                items: [
                     {name:"张三",age:10},
                     {name:"李四",age:15}
                ]
            }
        }
    }
</script>


运行结果如下:
这里写图片描述
v-for还可以在一段范围内取值,代码如下:

<template>
    <dir>
        <span v-for="n in 10">{{n}}</span>
    </dir>
</template>



注:当它们处于同一节点,v-for 的优先级比 v-if 更高,这意味着 v-if 将分别重复运行于每个 v-for 循环中。
【转载】https://blog.csdn.net/hanhailong18/article/details/81539121

2 个回复

倒序浏览
回复 使用道具 举报
奈斯
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马