2016-11-08 20 views
6

में बच्चे से उत्सर्जित घटना को सुनने के लिए vm। $ का उपयोग करें I घटनाओं पर vue.js ईवेंट अनुभाग के माध्यम से किया गया है, लेकिन ऐसा लगता है कि vm का उपयोग करके ईवेंट को कैसे सुनना है। एचटीएमएल के भीतर हैंडलर पर $। 2.0 के बीच और नए बदलावों के बीच मैं अनिश्चित हूं कि बच्चे -> अभिभावक से किसी ईवेंट को कैसे प्रसारित करना है।vue.js 2.0

मुझे एक ईवेंट संचारित करने की आवश्यकता है क्योंकि माता-पिता प्राप्त करने के बाद मैं इसे किसी अन्य बच्चे को प्रसारित करना चाहता हूं।

मैं एक पृष्ठ घटकों का उपयोग कर रहा हूँ, यह मेरा सेटअप है:

// parent 
export default { 
    mounted: function() { 
    this.$on('myEvent', function (msg) { 
    console.log('caught in parent', msg) 
    }); 
}, 
components: { 
    'child': child, 
}, 
} 

// child 
this.$emit('myEvent', true) 

मैं माता पिता वी एम पर इस घटना को कैसे प्राप्त कर सकते हैं, कृपया? नोट, मैं एचटीएमएल में $ का उपयोग नहीं करना चाहता। मैं चाहता हूं कि घटना वीएम में तर्क प्राप्त करे जहां यह होना चाहिए।

धन्यवाद,

उत्तर

9

Vues$emit पर प्रलेखन बहुत व्यापक नहीं है, तथापि, वहाँ यह करने के लिए कुछ तरीके हैं। सबसे पहले आप Vue मॉडल क्या आप this.$on() उपयोग करना चाहते हैं के लिए संदेश भेजना चाहते हैं पर $emit करने के लिए है, तो आप एक घटक से भेज रहे हैं, तो आप उपयोग कर प्रत्यक्ष माता-पिता को फेंकना कर सकते हैं:

this.$parent.$emit('myEvent',true); 

हालांकि, इस यदि आप एकल फाइल घटकों का उपयोग कर रहे हैं

// In the root as a global variable so all components have access 
var bus = new Vue({}); 

या: यदि आप माता-पिता की एक लंबी श्रृंखला है, क्योंकि आप बच्चे श्रृंखला $emit है, ताकि मामले में आप एक बस के रूप में एक Vue उदाहरण उपयोग कर सकते हैं समस्याग्रस्त हो सकता है ।

bus.$on('myEvent',() => { 
    // Do stuff 
}); 

और emitter में:

window.bus = new Vue({}); 
तो रिसीवर में

bus.$emit('myEvent',true); 

अंत में, आप आप app एक साधारण बस के लिए बहुत जटिल हो रही है तो आप vuex उपयोग कर सकते हैं, तो :

https://vuex.vuejs.org/en/index.html

+0

ठीक है मैं बस के लिए गया जो सैनिस्ट विकल्प की तरह लगता है। सूचक के लिए धन्यवाद, मुझे पता है कि दस्तावेज़ बस का उल्लेख करते हैं लेकिन सोचा कि मैं इसे बिना आवश्यकता के दूर हो सकता है। – rix

+0

इसका उपयोग करके इसे हल करें। $ प्रशंसक। $ बच्चे को माता-पिता से डेटा पास करने के लिए उत्सर्जित करें। – liyj144

+0

धन्यवाद, मुझे एहसास नहीं हो सकता है कि 'डू स्टफ' कहां से func से पैरेंट विधि को कॉल करना है। ऐसा लगता है बस बस संदर्भ: / –