vue:自定义指令

211 阅读1分钟

现在有这么一个需求,我们页面当中有很多按钮,我们需要根据后端返回来的数据进行对这个按钮进行显示隐藏,这时时候我们可以通过 自定义指令来对这些按钮进行显示隐藏。

1. array.js 后端返回的数据进行判断

export function checkArr(key) {
  let arr = [1, 2, 3, 4, 5]
  if(arr.indexOf(key)>-1) {
    return true;
  } else {
    return false;
  }
}

2. main.js

这里的判断比较少,我们直接在 main.js 中进行操作,如果逻辑比较复杂的话,我们需要新建一个文件,进行自定义指令。

import {checkArr} from './common/array.js'

Vue.directive('display-key', {
  inserted(el, binding) {
    console.log(binding, 'binding')
    let displayKey = binding.value;
    console.log(displayKey, 'displayKey')
    console.log(el, 'el')
    if(displayKey) {
      let hasKey = checkArr(displayKey);
      if(!hasKey) {
        // 如果没有key值,删除这个el删除
        el.parentNode && el.parentNode.removeChild(el);
      }
    } else {
      throw new Error('需要一个Key值')
    }
  }
})

image.png

3. 在组件中进行测试

   <button v-display-key="1">按钮1</button>
   <button v-display-key="3">按钮2</button>
   <button v-display-key="5">按钮3</button>
   <button v-display-key="7">按钮4</button>
   <button v-display-key="9">按钮5</button>
   <button v-display-key="10">按钮6</button>

image.png

4. 页面效果如下

image.png