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 API 开发者
Vue是如何进行组件化的
Vue是如何进行组件化的
|
1月前
|
JavaScript 前端开发 开发者
vue 数据驱动视图
总之,Vue 数据驱动视图是一种先进的理念和技术,它为前端开发带来了巨大的便利和优势。通过理解和应用这一特性,开发者能够构建出更加动态、高效、用户体验良好的前端应用。在不断发展的前端领域中,数据驱动视图将继续发挥重要作用,推动着应用界面的不断创新和进化。
|
6天前
|
JavaScript 关系型数据库 MySQL
基于VUE的校园二手交易平台系统设计与实现毕业设计论文模板
基于Vue的校园二手交易平台是一款专为校园用户设计的在线交易系统,提供简洁高效、安全可靠的二手商品买卖环境。平台利用Vue框架的响应式数据绑定和组件化特性,实现用户友好的界面,方便商品浏览、发布与管理。该系统采用Node.js、MySQL及B/S架构,确保稳定性和多功能模块设计,涵盖管理员和用户功能模块,促进物品循环使用,降低开销,提升环保意识,助力绿色校园文化建设。
|
1月前
|
JavaScript 前端开发 开发者
vue学习第一章
欢迎来到我的博客!我是瑞雨溪,一名热爱前端的大一学生,专注于JavaScript与Vue,正向全栈进发。博客分享Vue学习心得、命令式与声明式编程对比、列表展示及计数器案例等。关注我,持续更新中!🎉🎉🎉
39 1
vue学习第一章
|
1月前
|
JavaScript 前端开发 索引
vue学习第三章
欢迎来到瑞雨溪的博客,一名热爱JavaScript与Vue的大一学生。本文介绍了Vue中的v-bind指令,包括基本使用、动态绑定class及style等,希望能为你的前端学习之路提供帮助。持续关注,更多精彩内容即将呈现!🎉🎉🎉
30 1
|
1月前
|
缓存 JavaScript 前端开发
vue学习第四章
欢迎来到我的博客!我是瑞雨溪,一名热爱JavaScript与Vue的大一学生。本文介绍了Vue中计算属性的基本与复杂使用、setter/getter、与methods的对比及与侦听器的总结。如果你觉得有用,请关注我,将持续更新更多优质内容!🎉🎉🎉
38 1
vue学习第四章
|
1月前
|
JavaScript 前端开发 开发者
Vue是如何劫持响应式对象的
Vue是如何劫持响应式对象的
29 1
|
1月前
|
JavaScript 前端开发 API
介绍一下Vue中的响应式原理
介绍一下Vue中的响应式原理
32 1
|
1月前
|
JavaScript 前端开发 开发者
Vue是如何进行组件化的
Vue是如何进行组件化的
|
1月前
|
存储 JavaScript 前端开发
介绍一下Vue的核心功能
介绍一下Vue的核心功能