1. 程式人生 > 其它 >vue函式簡寫,物件字面量和過濾器

vue函式簡寫,物件字面量和過濾器

技術標籤:開始學習Vue

函式簡寫

當想在 bind 和 update 中觸發相同行為,而不關心其他鉤子時,可以寫成函式的形式:

Vue.directive('myshow', (el, binding) => {
  const { value } = binding;
  const display = value ? '' : 'none';
  el.style.display = display;
})
Vue.directive('slice', (el, binding, vnode) => {
  const vm = vnode.context;
  let
{ value, expression, arg, modifiers } = binding; if(modifiers.number) { value = value.replace(/[^0-9]/g, ''); } el.value = value.slice(0, arg); vm[expression] = value.slice(0, arg); el.oninput = function (e) { let inputVal = el.value; if(modifiers.number) { inputVal = inputVal.
replace(/[^0-9]/g, ''); } el.value = inputVal.slice(0, arg); vm[expression] = inputVal.slice(0, arg); } })

物件字面量

如果自定義指令需要多個值,可以傳入一個 JS 物件字面量。指令函式能夠接受所有合法的 JS 表示式。

<div v-demo="{ color: 'white', text: 'hello!' }"></div>
Vue.directive('demo', function (el, binding) {
  console.
log(binding.value.color) // => "white" console.log(binding.value.text) // => "hello!" })

過濾器

自定義過濾器,用於一些常見的文字格式化。

過濾器可用在兩個地方:雙花括號插值 和 v-bind 表示式,新增在JS表示式的尾部,由“管道”符號表示:

<!-- 在雙花括號中 -->
{{ message | filter }}

<!-- 在 v-bind 中 -->
<div v-bind:id="id | filter"></div>

定義過濾器

全域性過濾器:

Vue.filter('filter', value => {})

區域性過濾器:

filter () {
  return xxx;
}

引數

當過濾器形式為 msg | filter 時,filter過濾器接收一個引數,引數為msg

當過濾器形式為 msg | filter('a')時,filter過濾器接收兩個引數,引數為msg, 'a'

過濾器串聯

{{ msg | filterA | filterB }}

在這個例子中,filterA的引數為msg,filterB的引數為filterA。