Vue快速入门(三:常用内置指令)《快乐Vue》

常用内置指令

v-bind:
    主要用于动态的绑定DOM元素属性,即属性值来自 Vue 中的 data 属性提供的相应的值。
例如:

<a v-bind:href="linkUrl">我是超链接</a>

new Vue({
  data: {
    linkUrl : "http://www.xxxx.com"
  }
  })

v-bind也可以简写为 : ,即上诉例子可以简写为

<a :href="linkUrl">我是超链接</a>

v-model:
    我们可以使用 v-model 指令在<input>(<input> 标签有多种类型,如 button、select 等等)及 <textarea> 元素上进行双向数据绑定。但 v-model 本质上不过是语法糖。它负责监听用户的输入事件以更新数据,并对一些极端场景进行一些特殊处理。
    使用v-model可以实现数据的绑定,也就是说我们在输入框中输入什么数据,对应的<span>标签中就会显示什么数据。
    具有 lazy、number、debounce(2.0 废除)。trim(2.0 新增)这些修饰符。
下面这个例子可以将你输入的内容实时的显示在页面上:

<!DOCTYPE html>
<html>
<head>
    <title>v-model</title>
    <meta charset="utf-8">
</head>
<!-- 引入vue.js -->
<script src="https://unpkg.com/vue/dist/vue.js"></script>

<body>
<div id="app">

    <!-- 未使用 v-model 进行数据双向绑定 -->
    <h1>未使用 v-model 进行数据双向绑定</h1>
    <input type="text" name="">
    <h2>{{ input1 }}</h2>
    <hr>
    <!-- 使用了 v-model 进行数据双向绑定 -->
    <h1>使用了 v-model 进行数据双向绑定</h1>
    <input type="text" name="" v-model="input2">
    <h2>{{ input2 }}</h2>
</div>

<script type="text/javascript">
//定义数据
var data = {
    input2 : ""
}
var vm = new Vue({
    el: "#app",
    data: data
});

</script>
</body>
</html>

运行效果如下:

v-model运行截图.png

v-if/v-else/v-show:
    v-if/v-else/v-show 这三个指令主要用于根据条件展示对应的模板内容。
    v-if 和 v-show 的主要区别就在于,v-if 在条件为 false 的情况下并不进行模板的编译,而 v-show 则会在模板编译好之后将元素隐藏掉。v-if 的切换消耗要比 v-show 高,但初始条件为 false 的情况下,v-if 的初始渲染要稍快。

v-for:
1.参数顺序变化
当包含参数 index 或 key 时,对象参数修改为(item, index)或(value, key),这样
与 JS Array 对象的新方法 forEach 和 map,以及一些对象迭代器(例如 lodash)的参数能保
持一致。
2.v-bind:key属性 track-by 被 v-bind :key 代替,<div v-for="item in items" tranck-by="id"> 需要改写成 <div v-for="item in items" v-bind:key="item.id">。
3.n in 10v-for="n in 10" 中的 n 由原来的 0 ~ 9 迭代变成 1 ~ 10 迭代。

v-on:
主要用于事件的绑定。

<button v-on:click="func">提交<button>
或
<button @click="func">提交<button>

v-text:
v-text,参数类型为 String,作用是更新元素的 textContent。{{}} 文本插值本身也会
被编译成 textNode 的一个 v-text 指令。而与直接使用 {{}} 不同的是,v-text 需要绑定在某
个元素上,能避免未编译前的闪现问题。例如:

<span>{{msg}}</span>         //可能出现编译闪现问题
<span v-text="msg"></span>   //不会出现闪现问题

v-HTML:
v-HTML, 参数类型为 String,作用为更新元素的 innerHTML,接受的字符串不会进行
编译等操作,按普通 HTML 处理。同 v-text 类似,{{{}}} 插值也会编译为节点的 v-HTML
指令,v-HTML 也需要绑定在某个元素上且能避免编译前闪现问题。例如:

<span>{{HTML}}</span>       //可能出现编译闪现问题
<div v-HTML="HTML"></div>   //不会出现闪现问题

v-el/v-ref:
已弃用,统一使用 ref 属性标记元素或组件添加标记,然后通过this.$refs获取,示例如下:

<!DOCTYPE html>
<html>
<head>
    <title>v-model</title>
    <meta charset="utf-8">
</head>
<!-- 引入vue.js -->
<script src="https://unpkg.com/vue/dist/vue.js"></script>

<body>
<div id="app">
    <div ref="test">hello vue !!!!!!!!</div>
</div>

<script type="text/javascript">
var vm = new Vue({
    el: "#app",
    mounted:function (){
        alert(this.$refs.test.innerText)
    }
});
console.log(vm.$refs.test.innerText)
</script>
</body>
</html>

v-pre:
用来跳过编译这个元素和子元素,显示原始的{{}}Mustache标签,用来减少编译时间,例如:

<div>{{msg}}</div>
new Vue({
  el: "#app",
  data:{
    msg: "test v-pre"
  }
  })

v-cloak:
v-cloak 指令相当于在元素上添加了一个 [v-cloak] 的属性,直到关联的实例结束编译。
官方推荐可以和 css 规则 [v-cloak]{ display :none } 一起使用,可以隐藏未编译的 Mustache
标签直到实例准备完毕。例如:

<div v-cloak>{{ msg }}</div>

v-once:
v-once 指令是 Vue.js 2.0 中新增的内置指令,用于标明元素或组件只渲染一次,即使随
后发生绑定数据的变化或更新,该元素或组件及包含的子元素都不会再次被编译和渲染。这样
就相当于我们明确标注了这些元素不需要被更新,所以 v-once 的作用是最大程度地提升了更
新行为中页面的性能,可以略过一些明确不需要变化的步骤。
示例:

<!DOCTYPE html>
<html>
<head>
    <title>v-model</title>
    <meta charset="utf-8">
</head>
<!-- 引入vue.js -->
<script src="https://unpkg.com/vue/dist/vue.js"></script>

<body>
<div id="app">
    <div v-once>v-once:{{oncemsg}}</div>
    <div>no v-once:{{msg}}</div>
</div>

<script type="text/javascript">
data = {
    oncemsg: "test v-once",
    msg: "hello vue!!!!"
}
var vm = new Vue({
    el: "#app",
    data: data,
    mounted:function (){
        this.oncemsg = "changed msg",
        this.msg = "changed msg"
    }
});
</script>
</body>
</html>

运行之后可以发现,加了v-once的msg并没有被改变值。

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

推荐阅读更多精彩内容

  • # 传智播客vue 学习## 1. 什么是 Vue.js* Vue 开发手机 APP 需要借助于 Weex* Vu...
    再见天才阅读 3,523评论 0 6
  • 这篇笔记主要包含 Vue 2 不同于 Vue 1 或者特有的内容,还有我对于 Vue 1.0 印象不深的内容。关于...
    云之外阅读 5,044评论 0 29
  • vue概述 在官方文档中,有一句话对Vue的定位说的很明确:Vue.js 的核心是一个允许采用简洁的模板语法来声明...
    li4065阅读 7,185评论 0 25
  • 1.安装 可以简单地在页面引入Vue.js作为独立版本,Vue即被注册为全局变量,可以在页面使用了。 如果希望搭建...
    Awey阅读 10,982评论 4 129
  • 一、了解Vue.js 1.1.1 Vue.js是什么? 简单小巧、渐进式、功能强大的技术栈 1.1.2 为什么学习...
    蔡华鹏阅读 3,311评论 0 3