Vue: Bagaimana kalau menambahkan beberapa kait ke arahan 'v-on', seperti 'sebelum' dan 'sesudah'

Dibuat pada 16 Mar 2016  ·  3Komentar  ·  Sumber: vuejs/vue

Permintaan fitur baru:
Bagaimana kalau menambahkan beberapa kait ke arahan 'v-on', seperti 'sebelum' dan 'sesudah'.

Apa yang ingin saya lakukan:
Saya ingin menambahkan beberapa validasi sebelum acara klik dipicu, dan banyak tombol yang tidak divalidasi sebelum klik.

Bagaimana itu bekerja:
Jika saya memiliki kait sebelumnya, saya perlu menjalankan 'metode sebelum' dan hanya metode yang mengembalikan true, saya akan melakukan pengikatan peristiwa nyata.

Komentar yang paling membantu

Anda cukup melakukannya di dalam handler. Jika Anda perlu menggunakan kembali logika yang sama, Anda dapat menjadikannya sebagai filter atau hanya menyusunnya di dalam JS:

function guard (handler) {
  return function (e) {
    if (...) {
      e.preventDefault()
    }
    return handler.call(this, e)
  }
}

methods: {
  onClick: guard(function (e) {
    // ...
  })
}

Semua 3 komentar

Bagaimana saya menangani ini saat ini:

...
  methods: {
    someButtonClickHandler () {
      new Promise( (resolve, reject) => {
          // setup logic
      })
        .then( (result) => {
           // before logic,
        })
        .then( (result) => {
           // the handler
        })
        .catch( (err) => {
           // handle exceptions
        })
        .finally( () => {
          // cleanup ?
        })
    }  
  }
...

Mungkin bukan cara yang benar, tapi begitulah cara saya menangani kasus penggunaan Anda.

secara khusus:

import store from 'application/store';
import {storeAnswer} from 'application/store/actions';
import validate from 'validate.js';

export default {

  vuex: {
    storeAnswer
  },

  computed: {

    firstName: {
      get () { return store.state.Thing.firstName; },
      set (value) {
        validate.async(data, constraints)
          .then( () => {
             this.storeAnswer(value);
          });
          .catch((err)=>{
            // handle validation errors ?
          });
      }
    }

  }
};


Anda cukup melakukannya di dalam handler. Jika Anda perlu menggunakan kembali logika yang sama, Anda dapat menjadikannya sebagai filter atau hanya menyusunnya di dalam JS:

function guard (handler) {
  return function (e) {
    if (...) {
      e.preventDefault()
    }
    return handler.call(this, e)
  }
}

methods: {
  onClick: guard(function (e) {
    // ...
  })
}

@yyx990803 Baiklah, saya kira saya mengerti maksud Anda, THX banyak

Apakah halaman ini membantu?
0 / 5 - 0 peringkat