add_callback_mixin.js 850 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. export default {
  2. created() {
  3. this.addInit()
  4. },
  5. methods: {
  6. addInit() {
  7. var { type } = this.$route.query
  8. if (type && this.callback[type]) {
  9. this.callback[type]()
  10. }
  11. },
  12. addOn(callback, typeStr = 'add') {
  13. if (!this.callback) {
  14. this.callback = {}
  15. }
  16. if (callback) {
  17. this.callback[typeStr] = callback
  18. }
  19. return () => {
  20. var { type, ...p } = this.$route.query
  21. this.$router.push({
  22. query: {
  23. ...p,
  24. type: typeStr
  25. }
  26. })
  27. callback && callback()
  28. }
  29. },
  30. addOff(callback) {
  31. return (...pm) => {
  32. var { type, ...p } = this.$route.query
  33. this.$router.push({
  34. query: {
  35. ...p
  36. }
  37. })
  38. callback && callback(...pm)
  39. }
  40. }
  41. }
  42. }