v-bind绑定标签属性
通过添加v-bind:标签属性来控制标签的属性,设置后自动查询vue里面的数据,通常简写成:标签属性,也可以传入对象,通过对象的值来控制是否为真
<body>
<div id="app">
<a v-bind:href="BaiDuUrl">{{txt}}</a>
<p :class="{txtPink:isPink}">新年新气象</p>
</div>
</body>
<script>
let vm = new Vue({
el:"#app",
data:{
BaiDuUrl:"https://www.baidu.com/",
txt:"百度",
isPink:true
}
})
</script>
</html>
<style>
.txtPink{
color: pink;
}
</style>
v-on监听事件
v-on指令用于绑定事件监听器,通常简写成@事件类型(click,mouseenter,mouseleave...)="表达式",表达式可以是方法名(方法需要写在methods对象里面,方法里面可以接收事件对象),逻辑等.
<body>
<div id="app">
<p>{{num}}</p>
<button v-on:click="num+=2">加2</button>
<button @click="numCut">减2</button>
</div>
</body>
<script>
let vm = new Vue({
el:"#app",
data:{
num:20
},
methods: {
numCut(e){
this.num -= 2 ;
console.log(e)
}
},
})
</script>
v-on可以添加事件修饰符进行事件的扩展
.stop
.prevent
.capture
.self
.once
<!-- 阻止单击事件冒泡 -->
<a v-on:click.stop="doThis"></a>
<!-- 提交事件不再重载页面 -->
<form v-on:submit.prevent="onSubmit"></form>
<!-- 修饰符可以串联 -->
<a v-on:click.stop.prevent="doThat"></a>
<!-- 只有修饰符 -->
<form v-on:submit.prevent></form>
<!-- 添加事件侦听器时使用事件捕获模式 -->
<div v-on:click.capture="doThis">...</div>
<!-- 只当事件在该元素本身(比如不是子元素)触发时触发回调 -->
<div v-on:click.self="doThat">...</div>
<!-- 点击事件将只会触发一次 -->
<a v-on:click.once="doThis"></a>
v-if和v-show指令控制显示/隐藏
v-show是对样式层面的控制,v-if是对dom节点的控制,并且可以设置v-else if,v-else进行扩展
<body>
<div id="app">
<h1 v-show="isShow">标题</h1>
<p v-if="isShow">第一段文字</p>
<p v-else-if="num==1">第二段文字</p>
<p v-else>第三段文字</p>
<button @click="isShow=!isShow">显示/隐藏</button>
</div>
</body>
<script>
let vm = new Vue({
el:"#app",
data:{
isShow:true,
num:0,
},
})
</script>
v-for指令进行循环
当需要循环Vue里面的数据渲染到页面时可以使用v-for指令,使用 (item,index) in list的语法,通常后面设置:key="唯一值",用来高效的更新DOM.如果传入对象可以使用(item,key,index) in obj,取到对象的键值
<body>
<div id="app">
<ul>
<li v-for="(item,index) in lists" :key="item">第{{index+1}}个:{{item}}</li>
</ul>
<p v-for="(item,key,index) in someOne" :key="key">第{{index+1}},{{key}}是{{item}}</p>
</div>
</body>
<script>
let vm = new Vue({
el:"#app",
data:{
lists:['段誉','王语嫣','虚竹','乔峰'],
someOne:{
'早上':'吃早餐',
'中午':'吃午饭',
'晚上':"吃晚饭"
}
},
})
</script>
<!-- 页面数据
第1个:段誉
第2个:王语嫣
第3个:虚竹
第4个:乔峰
第1,早上是吃早餐
第2,中午是吃午饭
第3,晚上是吃完饭
-->
v-model指令
v-model的值是,vue接收表单元素的值的变量名,可以实现双向数据绑定,通过改变v-model的txt值,使绑定txt值的元素发生改变.
v-model限制在input、select、textarea、components中使用,修饰符.lazy(取代 input 监听 change 事件)、.number(输入字符串转为有效的数字)、.trim(输入首尾空格过滤)
v-model 本质上包含了两个操作:
<body>
<div id="app">
<p >{{txt}}</p>
<input type="text" v-model="txt">
</div>
</body>
<script>
let vm = new Vue({
el:"#app",
data:{
txt:'默认文字'
},
})
</script>
指令式编程:告诉机器该如何做,并得到自己想要的结果。声明式编程:告诉机器您想得到什么,让机器自己计算该如何做。
整理vue常用的内置指令:v-bind指令、v-text指令、v- html指令、v-show指令、v-if指令、v-else 指令、v-else-if 指令、v-for 指令、v-on 指令、v-model 指令、v-once 指令、v-cloak指令、v-pre指令
本文将解释如何通过按下(或按住)按钮来执行功能和删除输入。首先,我将解释如何在VanillaJS中实现这一目标。然后,为它创建一个Vue指令。那么,让我们开始吧。
全局API并不在构造器里,而是先声明全局变量或者直接在Vue上定义一些新功能,Vue内置了一些全局API,比如我们今天要学习的指令Vue.directive。说的简单些就是,在构造器外部用Vue提供给我们的API函数来定义新的功能。
v-text主要用来更新textContent,可以等同于JS的text属性。v-html双大括号的方式会将数据解释为纯文本,而非HTML。为了输出真正的HTML,可以用v-html指令。它等同于JS的innerHtml属性。
可以用方括号括起来的 JavaScript 表达式作为一个指令的参数:动态参数预期会求出一个字符串,异常情况下值为 null。这个特殊的 null 值可以被显性地用于移除绑定。任何其它非字符串类型的值都将会触发一个警告。
今天使用v-for指令的时候遇到一个错误:[Vue warn]: Error in render: \\\"TypeError: Cannot read property \\\'children\\\' of undefined\\\",猜测使用了嵌套属性的原因,在页面中无法解析出具体属性值
使用场景:代码复用和抽象的主要形式是组件;当需要对普通 DOM 元素进行底层操作,此时就会用到自定义指令;但是,对于大幅度的 DOM 变动,还是应该使用组件
意义就是在组件里留着差值方便后续组件内容新增,而且由于插件是写在父级中数据可以直接父级中传输而不需要传子再传父有些情况会减少写代码量,组件里没有设置插件名称,页面中插槽中写了插槽名称 结果页面中插槽不会被渲染
vue.js官方给自己的定为是数据模板引擎,并给出了一套渲染数据的指令。本文详细介绍了vue.js的常用指令。Vue.js 使用了基于 HTML 的模板语法最简单的使用vue的方式是渲染数据,渲染数据最常见的形式就是
内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!