index.js 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import { VantComponent } from '../common/component';
  2. import { button } from '../mixins/button';
  3. import { openType } from '../mixins/open-type';
  4. VantComponent({
  5. mixins: [button, openType],
  6. classes: ['custom-class', 'loading-class', 'error-class', 'image-class'],
  7. props: {
  8. src: {
  9. type: String,
  10. observer() {
  11. this.setData({
  12. error: false,
  13. loading: true,
  14. });
  15. },
  16. },
  17. round: Boolean,
  18. width: null,
  19. height: null,
  20. radius: null,
  21. lazyLoad: Boolean,
  22. useErrorSlot: Boolean,
  23. useLoadingSlot: Boolean,
  24. showMenuByLongpress: Boolean,
  25. fit: {
  26. type: String,
  27. value: 'fill',
  28. },
  29. showError: {
  30. type: Boolean,
  31. value: true,
  32. },
  33. showLoading: {
  34. type: Boolean,
  35. value: true,
  36. },
  37. },
  38. data: {
  39. error: false,
  40. loading: true,
  41. viewStyle: '',
  42. },
  43. methods: {
  44. onLoad(event) {
  45. this.setData({
  46. loading: false,
  47. });
  48. this.$emit('load', event.detail);
  49. },
  50. onError(event) {
  51. this.setData({
  52. loading: false,
  53. error: true,
  54. });
  55. this.$emit('error', event.detail);
  56. },
  57. onClick(event) {
  58. this.$emit('click', event.detail);
  59. },
  60. },
  61. });