<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script src="../vue.js"></script> </head> <body> <div id="root"> <!-- 1.定义一个v-big指令,和v-text功能类似,但会吧绑定数值放大10倍 2.定义一个v-fbing指令,和v-bind功能类似,但可以让其所绑定的input元素默认获取焦点 定义语法: 1.局部指令 new Vue({ new Vue({ directives:{指令名:配置对象} directives{指令名:回调函数} }) }) 2.全局指令 Vue.directive(指令名:配置对象) Vue.directive(指令名,回调函数) 二。配置对象中常用三个回调 bind:指令与元素成功绑定时 inserted:指令所在元素被插入页面时 update:指令所在模板被重新解析 三。备注 注意:v-content命名问题:如果有多个单次名称的时候, v-content-Number(需要用这种方法进行写入) vue中:'content-number' 用引号括起来 注意:不能大写 --> <!-- 1 --> <h2>当前值: <span v-text="n"></span> </h2> <h3>请输入内容:<span v-content-number="n"></span></h3> <!-- <h3>请输入内容:<span v-content="n"></span></h3> --> <button @click="n++">点击后值相加</button> <hr> <!-- 2 --> <input type="text" v-fbind:value="n"> </div> <script> Vue.config.productionTip=false //全局使用(find) Vue.directive('fbind',{ bind(element,binding){ element.value = binding.value }, //指令所在元素被插入页面时 inserted(element,binding){ element.focus()//首次获取焦点 }, //指令所在模板被重新解析 update(element,binding){ element.value = binding.value element.focus()//一直获取焦点 } }) //全局使用(v-content) Vue.directive('content-number',function(element,binding){ console.log(element,binding,this)//this指向window element.innerText = binding.value * 10 }) new Vue({ el:'#root', data:{ n:1 }, //只能在局部中使用,如果需要在全局使用 directives:{ //content函数何时被调用:1.指令与元素成功绑定时,2、指令所在模板被重新解析 //写法1 // content(element,binding){ // console.log(element,binding) // element.innerText = binding.value * 10 // }, //或者这样写 // 'content-number'(element,binding){ // console.log(element,binding,this)//this指向window // element.innerText = binding.value * 10 // }, //局部 // fbind:{ // //指令与元素成功绑定时 // bind(element,binding){ // element.value = binding.value // }, // //指令所在元素被插入页面时 // inserted(element,binding){ // element.focus()//首次获取焦点 // }, // //指令所在模板被重新解析 // update(element,binding){ // element.value = binding.value // element.focus()//一直获取焦点 // } // } } }) </script> </body> </html>
标签:自定义,directive,binding,focus,value,element,content,命令,指令 From: https://www.cnblogs.com/wsx123/p/16953586.html