鱼C论坛

 找回密码
 立即注册
查看: 1970|回复: 10

[庖丁解牛] 006 V 指令+事件+语法糖

[复制链接]
发表于 2018-9-1 10:52:31 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 不二如是 于 2018-9-2 12:01 编辑


                               
登录/注册后可看大图


上一讲我们搞定了过滤器,本次来学习三个很使用的操作。

指令(Directives)是Vue模版中最常用的一项,它带有前缀“v-”,之前的课程中我们已经看到了。

比如,v-if、v-html、v-pre等,指令的职责就是:
当其表达式的值改变时,相应的将某些行为应用到DOM上。


下面我们拿最常用的v-if来举例,创建div:
<div id="myApp">
 <p v-if="show">一起说:我爱鱼C</p>
</div>

创建Vue实例:
<script>
    var app = new Vue({
        el:"#myApp",
        data:{
            show:true
        }
    })
</script>
Snip20180901_176.png


当我们将show对应的值从true改为false,上面那段文本就不见了。

当数据show的值为true,p元素会被插入,为false会被移除。

数据驱动DOM是Vue的核心理念。

所以不到万不得已不要主动操纵DOM,我们只需要维护好数据,Vue会帮你自动处理好DOM。

Vue内置了很多指令,可以快速帮助我们完成DOM操作。

比如,循环渲染,显式与隐藏等,后面我们会详细介绍到。

本次主要掌握两个:v-bindv-on

v-bind的基本用途是:
动态更新HTML元素上的属性,比如id,class等。


创建div:
<div id="myApp">
    <a v-bind:href="url">鱼C主页</a>
</div>

创建Vue实例:
<script>
    var app = new Vue({
        el:"#myApp",
        data:{
            url:"https://ilovefishc.com/"
        }
    })
</script>
Snip20180902_181.png


通过v-bind,一个正常的链接就搞定了。

留一个作业,模仿上面的调用,写一个图片的链接,见课后作业3。

上面就是v-bind最基本的用法,更厉害的用法,见后续教程哈~

v-on,用来:
绑定事件监听器


这样我们就可以做一些交互了。

div:
<div id="myApp">
    <p v-if="show">我爱鱼C</p>
    <button v-on:click="trueLove">显式/隐藏</button>
</div>

vue:
<script>
    var app = new Vue({
        el:"#myApp",
        data:{
            show:true
        },
        methods:{
            trueLove:function(){
                if(this.show == false){
                    this.show = true;
                }
                else{
                    this.show = false;
                }
            }
        }
    })
</script>
Sep-02-2018 11-39-20.gif


在button按钮上,使用了v-on:click给该元素绑定了一个点击事件。

在普通元素上,v-on可以监听原生的DOM事件,除了click外,还有dbclick、keyup、mousemove等。

表达式可以是一个方法名,这些方法以函数形式写在Vue实例的methods属性。

函数内的this指向的是当前Vue实例本身,因此可以直接使用this.xxx的形式来访问或修改数据。

this.show = false,把数据修改为false,点击就会移除文本,反之则显示。




语法糖

在JS:实用#JS语法糖系列中科普过JS的,其实Vue同理。

语法糖就是指:
在不影响功能的情况下,添加某种方法实现同样的效果。


Vue的v-bind和v-on指令都提供了语法糖,也可以说是缩写

比如v-bind,可以省略v-bind,直接写一个“:”
:href="url"

v-on,可以直接用“@”来缩写:
<button @click="trueLove">显式/隐藏</button>

说白了就是老手必备的装x神奇!




课后作业


1、指令的职责是什么?

2、Vue的核心理念是什么?

3、补充?处代码,完成图片调用:
<div id="myApp">
    <img ?:src="imgUrl">
</div>
<script>
    var app = new Vue({
        el:"#myApp",
        data:{
           ?:"https://i0.hdslb.com/bfs/album/c72530a36fbe6c57c2e14b90942728812f76b27a.png@518w_1e_1c.webp"
        }
    })
</script>

4、v-on监听原生的DOM事件其表达式的方法名写在哪里?



答案:
游客,如果您要查看本帖隐藏内容请回复





如果有收获,别忘了评分


                               
登录/注册后可看大图


这位鱼油,如果喜欢Vue,请订阅 专辑传送门)(不喜欢更要订阅



                               
登录/注册后可看大图

评分

参与人数 1荣誉 +6 鱼币 +6 贡献 +6 收起 理由
无符号整形 + 6 + 6 + 6 感谢楼主无私奉献!

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-9-1 17:31:15 | 显示全部楼层
1.当其表达式的值改变时,相应的将某些行为应用到DOM上
2.数据驱动DOM
另外,Vue真是好用哈~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-9-2 09:30:25 | 显示全部楼层
无符号整形 发表于 2018-9-1 17:31
1.当其表达式的值改变时,相应的将某些行为应用到DOM上
2.数据驱动DOM
另外,Vue真是好用哈~

成熟框架,肯定好用哈,标准化的锤子一般场景都好用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-10-9 11:47:44 | 显示全部楼层
已学习,谢谢老板
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-8 11:31:20 | 显示全部楼层
1.指令的职责是当其表达式发生变化时,将相应的变化应用到DOM中
2.Vue的核心理念是数据驱动DOM
3.空,imgUrl
4.v-on监听原生的DOM事件其表达式的方法名写在Vue实例的methods属性中
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-5 10:39:11 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-8 02:16:24 | 显示全部楼层
谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-19 12:09:25 | 显示全部楼层
0
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-23 11:39:36 | 显示全部楼层
当其表达式的值改变时,相应的将某些行为应用到DOM上。
数据驱动DOM
v-bind   imgUrl
METHODS
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-18 22:16:05 | 显示全部楼层
学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-10-31 10:56:59 | 显示全部楼层
1
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 23:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表