MyMixin.vue की विधि beginEdit है।

मैं जो करने की कोशिश कर रहा हूं वह है onFirstLineClick को this.folded के मान के आधार पर myMixin के beginEdit को कॉल करना।

जब मैं कंसोल लॉग करता हूं myMixin.beginEdit, यह undefined है और आश्चर्य की बात नहीं है myMixin.beginEdit() काम नहीं करता है।

क्या मुझे फ़ंक्शन का उपयोग करने के लिए आवश्यक कुछ याद आ रहा है? यदि हां, तो beginEdit <span> पर पूरी तरह से काम क्यों करता है?

<template>
  <div>
    <div>
      <div
        @click="onFirstLineClick"
      />
      <span
        @click="beginEdit"
      />
  </div>
</template>

<script>
import myMixin from './MyMixin';

export default {
  name: 'currComponent',
  mixins: [myMixin],
  data() {
    return {
      folded: false,
    };
  },
  methods: {
    onFirstLineClick(e) {
      // myMixin.beginEdit() doesn't work
    }
  },
};
</script>
1
PuffedRiceCrackers 18 अप्रैल 2020, 18:08

1 उत्तर

सबसे बढ़िया उत्तर

mixin के बारे में सबसे अच्छी बात यह है कि जब कोई घटक मिश्रण का उपयोग करता है, तो मिश्रण के सभी विकल्प घटक के अपने विकल्पों में "मिश्रित" हो जाएंगे। जिसका अर्थ है कि आपके घटक के अंदर आप सीधे mixin विधि को कॉल कर सकते हैं जैसे:

methods: {
  onFirstLineClick(e) {
    this.beginEdit()
  }
},

यही कारण है कि आप सीधे <span> पर beginEdit() विधि का उपयोग कर सकते हैं जैसे:

<span @click="beginEdit" />

कृपया यह भी जान लें कि भविष्य में यदि आप mixin विधि नाम beginEdit के समान नाम से इस घटक में एक विधि घोषित करते हैं, तो घटक की विधि प्राथमिकता लेगी और आप अलग व्यवहार देख सकते हैं। इसलिए, mixin विधियों को विशिष्ट नाम देना सुनिश्चित करें।

2
palaѕн 18 अप्रैल 2020, 15:25