Vue指令续

Vue指令

修饰符

一个指令可以包含的内容包括:

  • 指令名称

  • 指令值

  • 指令参数

  • 指令修饰符

    指令名称:参数 .修饰符 = 值
    v-bind:value.number = “msg”

不同的指令有不同的参数,也有不同的修饰符
有些指令是没有修饰符,有的多有的少,有的里面有重复的,有的完全是不同的

注意事项:

  • 1.不同的指令下,有不同的修饰符,需要使用时,查看api中对应的指令
  • 具体内容查看api或者自定义指令的具体实现

.lazy
取代 input 监听 change 事件
失去焦点时触发

<div id="app">
   <input type="text" v-model.lazy ="val">
   <span>{{val}}</span>
</div>

.number
如果想自动将用户的输入值转为数值类型,可以给 v-model 添加 number 修饰符

<div id="app">
    <input type="text" v-model.number ="one"> + <input type="text" v-model.number ="two"> = {{one + two}}
</div>

.trim

  • 输入首尾空格过滤
自定义指令

自定义指令

  • 全局指令
  • 局部指令

两者的最大区别:是在局上,也就是作用范围上

  • 全局指令
    directive 是Vue固定的,是为自动义指令留的口
    参数1: 指令名称
    参数2: 配置对象(方法名不是自定义,都是内置方法)
<div id="app">
        <!-- <input type="text" autofocus > -->
        <input type="text" v-focus >
</div>

<script>
      Vue.directive("focus",{
            
            // 当被绑定的元素插入到 DOM 中时触发
            inserted:function(el){
                console.log("我被触发了")
                el.focus()
            }

        });
        let app = new Vue({
            el:"#app",
            
        })

</script>
钩子函数

钩子函数:可以让开发者灵活控制 指令功能的执行时间
可以根据不同的时间段,执行不同的功能

  • bind : 只调用一次,指令第一次绑定到元素时调用。在这里可以进行一次性的初始化设置
  • inserted : 被绑定元素插入父节点时调用 (仅保证父节点存在,但不一定已被插入文档中)
  • update : 所在组件更新的时候调用
  • componentUpdated : 所在组件更新完成后调用
  • unbind : 只调用一次,指令与元素解绑时调用

不同的生命周期钩子函数在调用的时候同时会接收到传入的一些不同的参数

  • el : 指令所绑定的元素,可以用来直接操作 DOM
  • binding : 一个对象,包含以下属性:
  • name : 指令名,不包括 v- 前缀
  • value : 指令的绑定值(作为表达式解析后的结果)
  • expression : 指令绑定的表达式(字符串)
  • arg : 传给指令的参数,可选
  • modifiers : 传给指令的修饰符组成的对象,可选,每个修饰符对应一个布尔值
  • oldValue : 指令绑定的前一个值,仅在 updatecomponentUpdated 钩子中可用,无论值是否改变都可用
prop 和 attr
  • property: 操作的是js中的对象属性
  • attribute: 操作的是html标签的属性
 <input type="text" value="张三">

     <script>
         let input = document.querySelector("input");
         
         //通过js对象的属性值来改变页面值,但HTML本身的属性不变
         input.value  = "李四";
         //用户界面不变,但HTML本身的标签属性变了
         input.setAttribute("class","ipt");
         input.setAttribute("value","123");

     </script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值