• 随手vue笔记 (二)


    目录

    随手vue笔记 (一)

    随手vue笔记 (二)

     1、自定义指令_函数式

    自定义指令就是操作Dom元素

     console输出:

    实现代码:

     

    详细代码:

    <template>
      <div class="container">
          
          <h2>当前的n数值是:<span v-text="n"></span></h2>
          <h2>放到10倍N值是:<span v-big="n"></span></h2>
        <button @click="n++">按钮</button>
      </div>
    </template>
    <!-- 需求 -->
    <!--1、 定义一个v-Big指令和V-text功能类似,但会把绑定的数值放大10倍 -->
    <!--2、 定义一个v-fbind指令 和v-bind功能类似,但可以让其所绑定的input元素默认获取焦点。-->
    <script>
    export default {
      data () {
        return {
            n:0
        }
      },
      //定义指令
      directives:{
          //定义的时候不用加 V-
          //1、对象方式,可以处理细节
          //   big:{ 
          //       key:value,
          //       key:value,
          //   }
        //2、函数方式,不好处理细节
        big(element,binding){
            //element是真实的dom元素,也就是上面的span
            //bingding就是具体的值
            element.innerText = binding.value * 10;
        }
      }
     
    }
    </script>
    
    <style scoped>
    
    </style>
    View Code
    这里的big函数什么时候会被调用呢?
        1、指令与元素成功绑定时
        2、指令所用的到的变量发生变化的时候会调用,这样的说不准确,准确的说是 指令所在的模板重新解析时会被调用。

    第二个需求的实现:自定义 v-fbind指令

     代码:

    <template>
      <div class="container">
        <input type="text" v-fbind:value="n"  />
        <button @click="n++">按钮</button>
      </div>
    </template>
    <!-- 需求 -->
    <!--1、 定义一个v-Big指令和V-text功能类似,但会把绑定的数值放大10倍 -->
    <!--2、 定义一个v-fbind指令 和v-bind功能类似,但可以让其所绑定的input元素默认获取焦点。-->
    <script>
    export default {
      data () {
        return {
            n:0
        }
      },
      //定义指令
      directives:{
        fbind(element,binding){ //
            //element是真实的dom元素,也就是上面的 input
            //bingding就是具体的值
            element.value = binding.value * 10;
    
        }
      }
    }
    </script>
    
    <style scoped>
    View Code

     根据一下几个方法来实现需求二

      //定义指令
      directives:{
        fbind:{ //使用对象,以下几个函数式固定写法
          //当指令与元素成功绑定时会调用
          bind(){
            console.log('bind');
          },
          //指令所在元素被插入页面时
          inserted(){
            console.log('inserted');
          },
          //指令所在的模板被重新解析时
          update(){
            console.log('update');
          }
        }
      }

     2、自定义事件,除了@xxxx=“xxx”,还有更灵活的写法

      <!-- 子组件 -->
      methods:{
        ConsChild(){
           this.$emit("Cons",'AAAA')
        }
      },
      
     
     父组件中方法
     <MyFooter :todos="item" ref="foots" /> 
    
     methods:{
          ConData(data){
            console.log("定义事件神效啦......"+data);
          }
      }
     
     mounted(){
    //初始化就要加上 this.$refs.foots.$on('Cons',this.ConData) }

     

    解绑事件

    this.$off('Cons')

     解绑多个函数

    this.$off(['Cons','demo'])

     解绑所有函数

    this.$off()

     在组件上面的加在click不会被当做click原始事件,而是当时自定义事件,需要在子组件中用$emit调用一下

    <Student ref ="student" @click="show" />

    注意这里的click,那就想把他当做原生click来用,行嘛? 行,只要加一个.native

    <Student ref ="student" @click.native="show" />
  • 相关阅读:
    java基础之多线程一:概述
    java基础之io流总结四:字符流读写
    java基础之io流总结三:字节流读写
    java基础之io流总结二:File类基本应用
    java基础之io流总结一:io流概述
    java基础之集合:List Set Map的概述以及使用场景
    java基础之集合长度可变的实现原理
    HDU 4770 Lights Against Dudely 暴力枚举+dfs
    HDU 4771 BFS + 状压
    Codeforces Round #269 (Div. 2) D
  • 原文地址:https://www.cnblogs.com/youmingkuang/p/16450621.html
Copyright © 2020-2023  润新知