Vue入门-指令

5.指令

什么是指令?

指令 (Directives) 是带有 v- 前缀的特殊特性。指令特性的预期值是:单个 JavaScript 表达式。指令的职责是,当表达式的值改变时,将其产生的连带影响,响应式地作用于 DOM。

例如我们在入门案例中的v-on,代表绑定事件。

5.1.插值表达式

5.1.1.花括号

格式:

{
  {表达式}}

说明:

  • 该表达式支持JS语法,可以调用js内置函数(必须有返回值)
  • 表达式必须有返回结果。例如 1 + 1,没有结果的表达式不允许使用,如:var a = 1 + 1;
  • 可以直接获取Vue实例中定义的数据或函数

示例:

HTML:

<div id="app">{
  {name}}</div>

JS:

var app = new Vue({
   
    el:"#app",
    data:{
   
        name:"Jack"
    }
})

5.1.2.插值闪烁

使用{ {}}方式在网速较慢时会出现问题。在数据未加载完成时,页面会显示出原始的{ {}},加载完毕后才显示正确数据,我们称为插值闪烁。

我们将网速调慢一些,然后试试看刚才的案例:
在这里插入图片描述

刷新页面:
在这里插入图片描述

5.1.3.v-text和v-html

使用v-text和v-html指令来替代{ {}}

说明:

  • v-text:将数据输出到元素内部,如果输出的数据有HTML代码,会作为普通文本输出
  • v-html:将数据输出到元素内部,如果输出的数据有HTML代码,会被渲染

示例:

HTML:

<div id="app">
    v-text:<span v-text="hello"></span> <br/>
    v-html:<span v-html="hello"></span>
</div>

JS:

var vm = new Vue({
   
    el:"#app",
    data:{
   
        hello: "<h1>大家好,我是峰哥</h1>"
    }
})

效果:
在这里插入图片描述

并且不会出现插值闪烁,当没有数据时,会显示空白。

5.2.v-model

刚才的v-text和v-html可以看做是单向绑定,数据影响了视图渲染,但是反过来就不行。接下来学习的v-model是双向绑定,视图(View)和模型(Model)之间会互相影响。

既然是双向绑定,一定是在视图中可以修改数据,这样就限定了视图的元素类型。目前v-model的可使用元素有:

  • input
  • select
  • textarea
  • checkbox
  • radio
  • components(Vue中的自定义组件)

基本上除了最后一项,其它都是表单的输入项。

举例:

html:

<div id="app">
    <input type="checkbox" v-model="language" value="Java" />Java<br/>
    <input type="checkbox" v-model="language" value="PHP" />PHP<br/>
    <input type="checkbox" v-model="language" value="Swift" />Swift<br/>
    <h1>
        你选择了:{
  {language.join(',')}}
    </h1>
</div>
<script src="./node_modules/vue/dist/vue.js"></script>
<script type="text/javascript">
    var vm = new Vue({
    
        el:"#app",
        data:{
    
            language: []
        }
    })
</script>
  • 多个CheckBox对应一个model时,model的类型是一个数组,单个checkbox值默认是boolean类型
  • radio对应的值是input的value值
  • inputtextarea 默认对应的model是字符串
  • select单选对应字符串,多选对应也是数组

效果:
在这里插入图片描述

5.3.v-on

5.3.1.基本用法

v-on指令用于给页面元素绑定事件。

语法:

v-on:事件名="js片段或函数名"

示例:

<div id="app">
    <!--事件中直接写js片段-->
    <button v-on:click="num++">增加一个</button><br/>
    <!--事件指定一个回调函数,必须是Vue实例中定义的函数-->
    <button v-on:click="decrement">减少一个</button><br/>
    <h1>有{
  {num}}个女神迷恋峰哥</h1>
</div>
<script src="./node_modules/vue/dist/vue.js"></script>
<script type="text/javascript">
    var app = new Vue({
    
        el:"#app",
        data:{
    
            num:100
        },
        methods:{
    
            decrement(){
    
                this.num--;
            }
        }
    })
</script>

效果:
在这里插入图片描述

另外,事件绑定可以简写,例如v-on:click='add'可以简写为@click='add'

5.3.2.事件修饰符

在事件处理程序中调用 event.preventDefault()event.stopPropagation() 是非常常见的需求。尽管我们可以在方法中轻松实现这点,但更好的方式是:方法只有纯粹的数据逻辑,而不是去处理 DOM 事件细节。

为了解决这个问题,Vue.js 为 v-on 提供了事件修饰符。修饰符是由点开头的指令后缀来表示的。

  • .stop :阻止事件冒泡到父元素
  • .prevent:阻止默认事件发生
  • .capture:使用事件捕获模式
  • .self:只有元素自身触发事件才执行。(冒泡或捕获的都不执行)
  • .once:只执行一次

阻止默认事件


                
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值