zoukankan      html  css  js  c++  java
  • vue 自定义指令示例 v-prop

    1、v-prop

    vue框架子组件是不允许修改父组件传进来的props值。

    v-prop是实现一个子组件可以修改父组件prop传进来值的指令,修改属性后,子组件的props的值更新,但是不影响父组件原来的值。
    微信小程序子组件可以修改父组件传进来prop值。
    2、实现
    import _ from 'lodash'
    // 注册一个全局自定义指令 `v-prop`
    Vue.directive('prop', {
      // 只调用一次,指令第一次绑定到元素时调用。
      bind(el,binding,vnode){
        // 指令参数
        const dataName = binding.arg;
        vnode.componentInstance[dataName]=binding.value;
      },
      // update钩子函数
      update(el,binding,vnode){
        log(el,binding,vnode,'el,binding,vnode')
        // 指令参数
        const dataName = binding.arg;
    
        // 说明父组件的绑定值发生了更新
        // 父组件data中仅传入的值发生改变时,才更新子组件内容
        // 父组件data中其他值的改变,不会重新渲染子组件
        if (!_.isEqual(binding.value, binding.oldValue)) {
          vnode.componentInstance[dataName]=binding.value;
        }
      },
    })
  • 相关阅读:
    LayUI上传图片
    快递查询
    安装 Python
    HTML5 WebSocket
    反射实例
    反射
    工厂模式之工厂方法案例
    工厂模式之简单工厂案例
    第三方登录
    封装条形码MaHelper
  • 原文地址:https://www.cnblogs.com/mengfangui/p/12843312.html
Copyright © 2011-2022 走看看