基本指令01

v-text

v-text类似元素的innerText属性,它跟{{}}一样,用于数据绑定:

<div id="app">
    <!-- 绑定data中msg数据,将其渲染在页面上-->
    <h3 v-text="msg"></h3>
</div>
<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.12/vue.js"></script>
<script type="text/javascript">
    new Vue({
        el:"#app",
        data:{
            msg:"hello v-text"
        }
    })
</script>

跟{{}}一样,可以使用JavaScript逻辑运算,变量拼接等

<h3 v-text="msg + '111'"></h3>

<h3 v-text="msg > 1 ? '大于' : '小于'"></h3>

<h3 v-text="msg + msg"></h3>

添加了v-text,标签中的内容会被覆盖,页面上展示的是绑定的数据

<p v-text="msg">我会被覆盖</p>

v-html

v-html和v-text功能大同小异,唯一的区别就是对于标签的解析方面

<div id="app">
    <h3 style="color: red">v-text:</h3>
    <span v-text="msg"></span>
    <h3 style="color: red">v-html:</h3>
    <span v-html="msg"></span>
</div>
<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.12/vue.js"></script>
<script type="text/javascript">
    new Vue({
        el:"#app",
        data:{
            msg:"<h1>v-text和v-html的区别</h1>"
        }
    })
</script>

页面展示结果:

text-html.png

v-once

执行一次性地插值,当数据改变时,插值处的内容不会更新,v-once所定义的元素或组件只会渲染一次,首次渲染后,不再随着数据的改变而重新渲染。也就是说使用v-once,该块都将被视为静态内容。

<div id = "com">
    <h1> {{c}} </h1>
    <h4 v-once> {{c}} </h4>
    <input type="text" v-model="c">
</div>
<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.12/vue.js"></script>
<script>
    var a = new Vue({
        el: '#com',
        data:{
            c:'Hello vue'
        }
    });
</script>

使用了v-once只执行一次插值:

v-once.gif

v-pre

跳过这个元素和它的子元素的编译过程。一些静态的内容不需要编辑加这个指令可以加快编辑

<div id="app">
    <h3 style="color: red">不使用v-pre:</h3>
    <span>{{msg}}</span>
    <h3 style="color: red">使用v-pre:</h3>
    <span v-pre>{{msg}}</span>
</div>
<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.12/vue.js"></script>
<script type="text/javascript">
    new Vue({
        el:"#app",
        data:{
            msg:"HELLO VUE!"
        }
    })
</script>

展示:

v-pre.png

v-cloak

当网络较慢,网页还在加载 Vue.js ,而导致 Vue 来不及渲染,这时页面就会显示出 Vue 源代码。造成闪烁的效果

css:

[v-cloak]{
    display: none;
}
 <div id="app">
    <h3 style="color: red">闪烁展示源码</h3>
    <span>{{msg}}</span>
    <h3 style="color: red">使用cloak:</h3>
    <span v-cloak>{{msg}}</span>
</div>
<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.12/vue.js"></script>
<script type="text/javascript">
    new Vue({
        el:"#app",
        data:{
            msg:"HELLO VUE!"
        }
    })
</script>

展示效果

v-cloak2.gif

v-model

使用v-model可以实现标签数据的双向绑定,它会根据控件类型自动选取正确的方法来更新元素。

文本框

如下div中加入<p>{{ test}}</p>获取input数据,然后去修改input中数据会发现<p></p>中数据随之改变。

<div id="app">
    <input type="text" v-model="msg" />
    <p>{{msg}}</p>
</div>
<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.12/vue.js"></script>
<script type="text/javascript">
    var vm= new Vue({
        el:"#app",
        data:{ 
            msg:"好好学习"
        }
    })
</script>

效果:

v-model1.gif

复选框

选中或取消,值为true或false

<div id="app">
    <input type="checkbox" v-model="msg" />学习
    <p>{{msg}}</p>
</div>
<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.12/vue.js"></script>
<script type="text/javascript">
    var vm= new Vue({
        el:"#app",
        data:{ 
            msg:""
        }
    })
</script>

效果:

v-model2.gif

绑定的数据为空数组时,选中填null

<div id="app">
    <input type="checkbox" v-model="msg" />学习
    <p>{{msg}}</p>
</div>
<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.12/vue.js"></script>
<script type="text/javascript">
    var vm= new Vue({
        el:"#app",
        data:{ 
            msg:[]
        }
    })
</script>

效果:

v-model3.gif

因为复选框中,并没有vlaue值,加上vlaue,选中则填充到数组中

<div id="app">
    <input type="checkbox" v-model="msg" value="学习"/>学习
    <input type="checkbox" v-model="msg" value="游戏"/>游戏
    <p>{{msg}}</p>
</div>
<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.12/vue.js"></script>
<script type="text/javascript">
    var vm= new Vue({
        el:"#app",
        data:{ 
            msg:[]
        }
    })
</script>

效果:

v-model4.gif

单选框

当单选框的vlaue值跟绑定的数据相同的,那么默认就是选上的状态:

<div id="app">
    <label for="man">
        <input type="radio" v-model="sex" id="man" value="1">男
    </label>
    <label for="wom">
        <input type="radio" v-model="sex" id="man" value="1">女
    </label>
    <p>性别:{{sex}}</p>
</div>
<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.12/vue.js"></script>
<script type="text/javascript">
    var vm= new Vue({
        el:"#app",
        data:{ 
            sex:'1'
        }
    })
</script>

效果:

v-model4.png

当value值和绑定数据值不一致的时候,才不是选上的状态

<div id="app">
    <label for="man">
        <input type="radio" v-model="sex" id="man" value="男">男
    </label>
    <label for="wom">
        <input type="radio" v-model="sex" id="man" value="女">女
    </label>
    <p>性别:{{sex}}</p>
</div>
<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.12/vue.js"></script>
<script type="text/javascript">
    var vm= new Vue({
        el:"#app",
        data:{ 
            sex:''
        }
    })
</script>

效果:

v-model5.gif

下拉框

<div id="app">
    <select v-model="selected">
    <option value="星期天">星期天</option>
    <option value="我还在">我还在</option>
    <option value="学习">学习</option>
    </select>
    <p>选中:{{selected}}</p>
</div>
<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.12/vue.js"></script>
<script type="text/javascript">
    var vm= new Vue({
        el:"#app",
        data:{ 
            selected:''
        }
    })
</script>

效果:

v-model6.gif

表单输入绑定修饰符

lazy延迟修饰符
<div id="app">
    <input type="text" v-model.lazy="msg">
    <p>输入:{{msg}}</p>
    </div>
<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.12/vue.js"></script>
<script type="text/javascript">
    var vm= new Vue({
        el:"#app",
        data:{ 
            msg:''
        }
    })
</script>

效果:

v-model.lazy.gif
number数字修饰符

这通常很有用,因为即使在 type=“number” 时,HTML 输入元素的值也总会返回字符串。如果想自动将用户的输入值转为数值类型,可以给 v-model 添加 number 修饰符

<div id="app">
    <input type="text" v-model.number="msg">
    <p>输入:{{typeof(msg)}}</p>
</div>
<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.12/vue.js"></script>
<script type="text/javascript">
    var vm= new Vue({
        el:"#app",
        data:{ 
            msg:''
        }
    })
</script>

效果:

v-model.number.gif
过滤空白修饰符
<div id="app">
    <input type="text" v-model.trim="msg">
            <input type="text" v-model="msg2">
            <p>输入:{{msg}}</p>
            <p>输入:{{msg2}}</p>
</div>
<script src="https://cdn.bootcdn.net/ajax/libs/vue/2.6.12/vue.js"></script>
<script type="text/javascript">
    var vm= new Vue({
        el:"#app",
        data:{ 
            msg:'',
            msg2:''
        }
    })
</script>

效果


trim.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,287评论 6 498
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,346评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,277评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,132评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,147评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,106评论 1 295
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,019评论 3 417
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,862评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,301评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,521评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,682评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,405评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,996评论 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,651评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,803评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,674评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,563评论 2 352

推荐阅读更多精彩内容