Vue指令总结

本文详细介绍了Vue.js中的核心指令,包括条件渲染指令v-if/v-else/v-show,循环指令v-for,文本插值v-text/v-html,事件绑定v-on,双向数据绑定v-model及属性绑定v-bind等。同时还探讨了这些指令的具体应用场景和注意事项。

1.0     v-if&v-else&v-show

v-if 是指令中判断如果是true则会显示该Dom元素,如果不是,则不显示该Dom元素

v-else是v-if下的另一种情况v-if如果为false则会显示v-else的内容

v-show和v-if的效果是一样的,但是唯一的区别是v-show是不显示,但是dom元素还在,而v-if不显示,则是vue不加载该dom元素,并不存在

2.0  v-for

v-for是循环某一个元素的指令,基础模版是<li v-for="(item,index) in items">{{item}}</li>

可以循环纯数组,也可以循环数据对象也就是json对象,如果给数组里面的数组排序,就必须用到computed的对象里面重新定义一个对象,返回排过序的数组,因为data里面的原数组vue实例对象会保护,如果直接用的,会污染原来的数据源,所以才会重新定义对象来操作原数组。如果数组只是一个纯数字的数组,那么直接用sort()方法,里面用一个function(a,b){return a-b}的函数来处理数组。如果是一个json对象的话就要用到

//数组对象方法排序:
function sortByKey(array,key){
    return array.sort(function(a,b){
      var x=a[key];
      var y=b[key];
      return ((x<y)?-1:((x>y)?1:0));
   });
}这里的key一定要加引号,因为是键值,属性值

来返回该数组,这在工作会经常用到,所以一定得记住

3.0 v-text&v-html

v-text 效果其实和{{}}里面加vue实例对象的属性是一样的,但是有弊端的,就是当我们网速很慢或者javascript出错时,会暴露我们的{{xxx}}。Vue给我们提供的v-text,就是解决这个问题的。v-html则会解析html相应的标签格式,有时候会很危险,因为容易导致XSS攻击。所以只能在可信的内容上使用v-html,永远不要在用户提交和可操作的网页上使用。

4.0 v-on

v-on是绑定事件 需要在methods对象中添加事件 简写是@事件,事件后面还可以加键盘码,如图所示


5.0 v-model 

v-model双向数据绑定,一般用在表单元素中,可以加修饰码.lazy.number.trim,其中值得注意的是多选绑定一个数组

       <p>
            <input type="checkbox" id="JSPang" value="JSPang" v-model="web_Names">
            <label for="JSPang">JSPang</label><br/>
            <input type="checkbox" id="Panda" value="Panda" v-model="web_Names">
            <label for="JSPang">Panda</label><br/>
            <input type="checkbox" id="PanPan" value="PanPan" v-model="web_Names">
            <label for="JSPang">PanPan</label>
            <p>{{web_Names}}</p>
       </p>

注意这个value是关键

6.0 v-bind 

是绑定标签属性的指令,简写是:属性值 1.直接绑定class样式 :class="className"(className要在data里面设置)2.判断class样式 :class="{red:isOk}"(red是常量代表css的样式名,isOk则要在data里面设置)3.class里面设置数组 : class="[classA,classB]"(后面的都是属性名,css样式写在后面的会覆盖前面的,但是值得注意的是,我指的是style样式中的顺序,而不是这里的顺序)4.绑定class的三元运算符<div:class="isOk?classA:classB">绑定class中的三元表达式判断</div>

5.绑定style :class="{color:red,fontSize:font}"(这里键是常量,代表的是属性名,而后面的则是要在data里面设置)6.绑定style对象 :class="styleObj" 这里的styleObj则是要在data 里面设置styleObj对象 记住前面的键一定得符合标签样式的写法,比如backgroundColor,fontSize,后面的值则是要加引号,并加上值才能正常显示其对应的样式

7.0 v-pre&v-cloak&v-once

v-pre 在模板中跳过vue的编译,直接输出原始值。就是在标签中加入v-pre就不会输出vue中的data值了。

v-cloak 在vue渲染完指定的整个DOM后才进行显示。它必须和CSS样式一起使用[v-cloak]{display:none}可以解决闪烁问题

v-once 在第一次DOM时进行渲染,渲染完成后视为静态内容,跳出以后的渲染过程。

<think>嗯,用户让我总结一下Vue指令。我需要先回忆一下Vue指令的基本概念。Vue指令是带有v-前缀的特殊属性,用于在DOM元素上应用响应式行为。常见的指令有哪些呢? 首先,v-bind,用来动态绑定属性,比如class或者style。然后是v-model,用于表单输入的双向数据绑定。v-if、v-else-if、v-else这些条件渲染指令。还有v-show,控制显示隐藏,跟v-if不同的是它用CSS的display属性。 接着是v-for,用于列表渲染,循环数组或对象。事件处理的话是v-on,比如点击事件。v-text和v-html,这两个是更新文本或HTML内容,但要注意v-html可能有XSS风险。v-pre和v-cloak,前者跳过编译,后者防止未编译的模板闪现。还有v-once,只渲染一次,之后不再更新。 用户可能需要的不仅仅是列举指令,还要知道每个的用途和区别。比如v-if和v-show的区别,什么时候用哪个。v-for中key的作用,为什么需要唯一key。v-model在不同表单元素上的应用,比如checkbox和select的处理方式。 另外,用户可能还想知道自定义指令,虽然问题里没提,但作为总结可能需要简要提到。比如如何注册全局或局部指令,以及钩子函数的使用场景,比如input自动聚焦。 需要确保回答结构清晰,分点说明,每个指令给出示例和注意事项。可能用户是刚学Vue,需要简明易懂的解释,避免过于技术化的术语,同时覆盖常用指令的主要功能。还要检查是否有遗漏的重要指令,比如v-slot在插槽中的使用,或者最新的Vue3中的变化,但问题没说版本,可能默认是Vue2还是Vue3? 不过用户的问题没有指定版本,可能应该以Vue2为主,同时提到Vue3中的变化吗?比如v-model的变更,或者v-bind的sync修饰符被移除了。但可能用户只需要基础总结,所以保持简单,重点放在核心指令上。 最后,组织回答的结构,先总述,再分点列出每个指令的用途、语法示例、注意事项,最后总结。确保用中文,例子用正确的LaTeX格式,比如代码用反引号包裹,但根据系统指令,数学表达式才用$,所以代码示例应该用代码块或者行内代码标记。</think>以下是Vue核心指令的总结(基于Vue 2.x版本): ### 一、基础指令 1. **v-bind** 动态绑定属性: ```html <img :src="imageUrl"> <!-- 简写形式 --> <div v-bind:class="{ active: isActive }"></div> ``` 2. **v-model** 表单双向绑定: ```html <input v-model="message"> <select v-model="selected"> <option>A</option> </select> ``` 3. **条件渲染** - `v-if` / `v-else-if` / `v-else` 动态添加/移除DOM元素 ```html <p v-if="score >= 90">优秀</p> <p v-else-if="score >= 60">及格</p> <p v-else>不及格</p> ``` - `v-show` 通过CSS控制显示(始终保留DOM) ```html <div v-show="isVisible">显示内容</div> ``` --- ### 二、列表与事件 4. **v-for** 列表渲染(必须加`key`): ```html <li v-for="(item, index) in items" :key="item.id"> {{ index }} - {{ item.name }} </li> ``` 5. **v-on** 事件绑定: ```html <button @click="submit">提交</button> <!-- 简写 --> <input @keyup.enter="onEnter"> ``` --- ### 三、内容处理 6. **v-text** 与 **v-html** ```html <span v-text="rawText"></span> <!-- 等同于 {{ }} --> <div v-html="userContent"></div> <!-- 谨慎使用XSS风险 --> ``` 7. **v-pre** 跳过编译: ```html <div v-pre>{{ 这里不会解析 }}</div> ``` 8. **v-cloak** 解决初始化闪屏: ```html <div v-cloak>{{ message }}</div> ``` ```css [v-cloak] { display: none; } ``` 9. **v-once** 单次渲染: ```html <span v-once>{{ 初始值 }}</span> ``` --- ### 四、进阶特性 10. **自定义指令** 实现DOM操作逻辑复用: ```javascript // 全局注册 Vue.directive('focus', { inserted: el => el.focus() }) ``` 使用: ```html <input v-focus> ``` --- ### 关键区别 | 指令 | 特点 | 使用场景 | |-------------|-----------------------------------|-------------------------| | `v-if` vs `v-show` | `v-if`销毁DOM,`v-show`切换display | 频繁切换用`v-show` | | `v-for` | 必须配合`:key` | 列表渲染 | | `v-model` | 语法糖(等价于`:value + @input`) | 表单双向绑定 | > 最新Vue 3的变化: > - `v-model`支持多个绑定(如`v-model:title`) > - `v-bind.sync`被移除,改用`v-model`参数形式 > - `v-for`中`key`改为必需属性 建议通过实际项目练习理解指令的配合使用,例如结合`v-for`与`v-if`时的优先级问题(不推荐同一元素同时使用)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值