天天看點

vue官方文檔(16) :将原生事件綁定到元件

<template>
  <div >
<base-input v-on:focus="onFocus" v-on:input="onInput"/>

</div>


</template>


<script>

// eslint-disable-next-line
//import { Lazyload } from 'vant';
//import {Toast} from 'vant';
//import {Notify} from 'vant'
import Vue from 'vue'




Vue.component('base-input', {
  inheritAttrs: false,
  props: ['label', 'value'],
  computed: {
    inputListeners: function () {
      var vm = this
      // `Object.assign` 将所有的對象合并為一個新對象
      return Object.assign({},
        // 我們從父級添加所有的監聽器
        this.$listeners,
        // 然後我們添加自定義監聽器,
        // 或覆寫一些監聽器的行為
        {
          // 這裡確定元件配合 `v-model` 的工作
          input: function (event) {
            vm.$emit('input', event.target.value)
          }
        }
      )
    }
  },
  template: `
    <label>
      {{ label }}
      <input
        v-bind="$attrs"
        v-bind:value="value"
        v-on="inputListeners"
      >
    </label>
  `
})




export default {
  components: {

  },
  data() {
    return {
      
    };
  },
    mounted() {
   
  },
  methods: {
    onFocus(){
      console.log("focused......")
    },
    onInput(){
      console.log("input......")
    }

    
  },
};
</script>

<style >
  

</style>      

繼續閱讀