Vue第二天---Vue指令(上)

简介: Vue第二天---Vue指令

Vue指令


指令(directives) 是Vue中最常用的功能,以带有v-前缀的特殊属性形式呈现,主要负责当表达式的值改变时,将其产生的连带影响响应式地作用于DOM

指令又分内置指令自定义指令


1.内置指令


1.1 v-bind


v-bind:响应并更新DOM特性

主要用法:绑定属性,动态更新HTML元素上的属性

例子


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>v-bind demo</title>
    <script src="../easy_start/js/vue.js" type="text/javascript" charset="UTF-8"></script>
</head>
<body>
<div id="app">
    v-bind demo
    <a v-bind:href="url">点击</a>
</div>
<script type="text/javascript">
    var vm=new Vue({
       el:'#app',
       data:{
           url:'https://juejin.cn/user/3985051634905256'
       }
    });
</script>
</body>
</html>


image.png


1.2 v-model


v-model:数据双向绑定,用于表单输入

主要用法:用在input、select、text、checkbox、radio等表单控件或者组件上创建双向绑定;它会根据控件的类型自动选取正确的方法来更新元素,主要负责监听用户的输入时间以更新数据,并处理一些极端的例子

例子


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>v-model demo</title>
    <script src="../easy_start/js/vue.js" type="text/javascript" charset="UTF-8"></script>
</head>
<body>
<div id="app">
    <input v-model="message" placeholder="edit">
    <p>Message is :{{message}}</p>
</div>
<script type="text/javascript">
    var vm=new Vue({
        el:'#app',
        data:{
            message:'v-model demo'
        }
    });
</script>
</body>
</html>
复制代码


image.png

网页中修改文本框中的内容,相应的消息也会改变


image.png


1.3 v-for


v-for:循环指令

主要用法:基于源数据多次渲染元素或者模块

例子

如果我们仅仅只用v-for写个例子就有点过于简单了,v-for的使用例如下面这样

<li v-for="{item,index} in todos"></li>

但是我想将前面的指令融合进来,我们可以选择展示哪个循环对象


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>v-for demo</title>
    <script src="../easy_start/js/vue.js" type="text/javascript" charset="UTF-8"></script>
</head>
<body>
<div id="app">
    <select v-model="selected">
        <option v-for="option in options" v-bind:value="option.value">
            {{ option.text }}
        </option>
    </select>
    <ol>
        <li v-for='value in selected'>
            {{value}}
        </li>
    </ol>
</div>
<script type="text/javascript">
    var vm=new Vue({
        el:'#app',
        data:{
            selected:'',
            options: [
                { text: 'stu', value: ['a','b','c'] },
                { text: 'num', value: [1,2,3] },
                { text: 'json', value: {a:'aaa',b:'bbb',c:'ccc'} }
            ]
        }
    })
</script>
</body>
</html>
复制代码


image.png

image.png

1.4 v-on


v-on:用于监听DOM事件

主要用法:绑定事件监听器,事件类型由参数指定,表达式可以是一个方法的名称或一个内联语句,如果没有修饰符也可以省略。


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>v-on demo</title>
    <script src="../easy_start/js/vue.js" type="text/javascript" charset="UTF-8"></script>
</head>
<body>
<div id="app">
    <input type="button" value="点击1" onclick="alert('点击1')">
    <input type="button" value="点击2" v-on:click="show()">
</div>
<script type="text/javascript">
    var vm=new Vue({
        el:'#app',
        data:{},
        methods:{
            show:function () {
                alert('点击2')
            }
        }
    })
</script>
</body>
</html>
复制代码


image.png


1.5 v-html


v-html:更新元素的innerHTML

因为安全问题,所以尽量避免使用v-html在网页动态渲染不安全的HTML


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>v-html demo</title>
    <script src="../easy_start/js/vue.js" type="text/javascript" charset="UTF-8"></script>
</head>
<body>
<div id="app" v-html="inner">
</div>
<script type="text/javascript">
    var vm=new Vue({
        el:'#app',
        data:{
            inner:'<h2>inner</h2>'
        }
    })
</script>
</body>
</html>


image.png


1.5 v-text


v-text:更新元素的textContent

主要用法:更新元素的textContent,v-text与{{}}两种写法可以互相替代,主要看需要的情况


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>v-text demo</title>
    <script src="../easy_start/js/vue.js" type="text/javascript" charset="UTF-8"></script>
</head>
<body>
<div id="app" v-text="'现在是'+year+'年'+month+'月'">
<!--    也可以去掉v-text写成:现在是{{year}}年{{month}}月-->
</div>
<script type="text/javascript">
    var vm=new Vue({
        el:'#app',
        data:{
            year:new Date().getFullYear(),
            month:new Date().getMonth()+1
        }
    })
</script>
</body>
</html>


image.png


1.6 v-cloak


v-cloak:不需要表达式,这个指令保持在元素上,直到关联实例结束编译

主要用法:当cloak和css规则一起用时,这个指令可以隐藏未编译的标签直到实例准备完毕


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>v-cloak demo</title>
    <style type="text/css">
        [v-cloak]{
            display:none;
        }
    </style>
    <script src="../easy_start/js/vue.js" type="text/javascript" charset="UTF-8"></script>
</head>
<body>
<div id="app">
    <span>{{111}}</span>
    <span v-cloak>{{message}}</span>
</div>
<script type="text/javascript">
    var vm=new Vue({
        el:'#app',
        data:{
            message:'hello'
        }
    })
</script>
</body>
</html>


image.png

1.7 v-pre


v-pre:不需要表达式,用于跳过元素及子元素的编译过程

主要用法:可以用来显示原始标签


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>v-pre demo</title>
    <script src="../easy_start/js/vue.js" type="text/javascript" charset="UTF-8"></script>
</head>
<body>
<div id="app">
    <span v-pre>{{message}}</span>
    <span>{{message}}</span>
</div>
<script type="text/javascript">
    var vm=new Vue({
        el:'#app',
        data:{
            message:'hello'
        }
    })
</script>
</body>
</html>


目录
相关文章
|
1天前
|
JavaScript
vue 动态绑定方法
vue 动态绑定方法
6 0
|
1天前
|
JavaScript
vue拖拽 —— vuedraggable 表格拖拽行
vue拖拽 —— vuedraggable 表格拖拽行
4 1
|
1天前
|
JavaScript
vue 手动/局部刷新组件
vue 手动/局部刷新组件
5 0
|
1天前
|
JavaScript 搜索推荐
vue【详解】props —— 子组件接收父组件传入的参数
vue【详解】props —— 子组件接收父组件传入的参数
6 0
|
1天前
|
JavaScript
vue 组件封装 | s-fullpage 全屏滚动 (内含绑定鼠标滑轮滚动事件、避免鼠标滑轮连续滚动、滑动过渡动画等实用技巧)
vue 组件封装 | s-fullpage 全屏滚动 (内含绑定鼠标滑轮滚动事件、避免鼠标滑轮连续滚动、滑动过渡动画等实用技巧)
13 4
|
1天前
|
JavaScript
vue 动画 —— 滚动动画
vue 动画 —— 滚动动画
6 0
|
1天前
|
JavaScript
vue 监听滚动条行为 | 判断滚动条是向上滚动还是向下滚动
vue 监听滚动条行为 | 判断滚动条是向上滚动还是向下滚动
8 0
|
1天前
|
JavaScript
vue 组件封装 | s-scroll 页面滚动动画
vue 组件封装 | s-scroll 页面滚动动画
6 0
|
1天前
|
JavaScript 前端开发
vue 页面下滚到目标元素的位置,目标元素自动吸顶(自动悬浮吸附到页面顶部)
vue 页面下滚到目标元素的位置,目标元素自动吸顶(自动悬浮吸附到页面顶部)
9 0
|
1天前
|
JavaScript 容器
Vue 动画 —— 滑动切换动画 / 滑动翻页过渡动画——从顶部到底部、从底部到顶部、从左侧到右侧、从右侧到左侧
Vue 动画 —— 滑动切换动画 / 滑动翻页过渡动画——从顶部到底部、从底部到顶部、从左侧到右侧、从右侧到左侧
8 0