2017-04-27 17 views
9

में मैं एक गतिशील दृश्य है।पासिंग रंगमंच की सामग्री गतिशील घटक को गतिशील VueJS

मेरे मामले में, मेरे पास तीन अलग-अलग घटक हैं: myComponent, myComponent1, और myComponent2। और मैं इस तरह उनके बीच स्विच:

Vue.component('myComponent', { 
    template: "<button @click=\"$parent.currentComponent = 'myComponent1'\"></button>" 
} 

अब, मैं myComponent1 को रंगमंच की सामग्री पारित करने के लिए करना चाहते हैं।

जब मैं घटक प्रकार को myComponent1 पर बदलता हूं तो मैं इन प्रोप को कैसे पास कर सकता हूं?

+0

आप तत्व 'propName =" propValue "' पर विशेषताओं के माध्यम से रंगमंच की सामग्री पारित सौंपा है। क्या यह आपका सवाल है? – thanksd

+0

मैं ऐसा नहीं कर सकता क्योंकि मैंने कभी भी '' मैं प्रोग्राम को $ $ parent.currentComponent = घटक नाम ' – Epitouille

+0

हाँ के साथ प्रोग्रामेटिक रूप से बदलता हूं लेकिन आप '

' लिखते हैं। यही वह जगह है जहां आप विशेषता जोड़ देंगे। – thanksd

उत्तर

25

रंगमंच की सामग्री गतिशील रूप से पारित करने के लिए, आप अपने गतिशील घटक को v-bind निर्देश जोड़ सकते हैं और एक वस्तु अपने प्रोप के नाम और मान युक्त पारित:

<component :is="currentComponent" v-bind="currentProperties"></component> 

:

तो अपने गतिशील घटक इस प्रकार दिखाई देगा और अपने Vue उदाहरण में, currentProperties वर्तमान घटक के आधार पर बदल सकते हैं:

data: function() { 
    return { 
    currentComponent: 'myComponent', 
    } 
}, 
computed: { 
    currentProperties: function() { 
    if (this.currentComponent === 'myComponent') { 
     return { foo: 'bar' } 
    } 
    } 
} 

तो अब, जबmyComponent है, इसमें foo संपत्ति 'bar' के बराबर होगी। और जब यह नहीं होता है, तो कोई गुण पारित नहीं किया जाएगा।

+0

नहीं लेता है, धन्यवाद! – Epitouille

+0

यह मेरे लिए क्यों काम नहीं कर रहा है? यह पहले घटक के लिए काम करता है, लेकिन जब मैं "वर्तमान कॉम्पोनेंट" बदलता हूं तो मुझे "घटक" पर "e.currentProperties" को परिभाषित किया जाता है। –

+0

@ रिकार्डोविगाट्टी, आपके किसी भी कोड को देखे बिना, यह जानना बहुत मुश्किल है – thanksd

0

आप आयात किया है तो आप के माध्यम से

var patientDetailsEdit = require('../patient-profile/patient-profile-personal-details-edit')
आवश्यकता कोड और नीचे के रूप में डेटा उदाहरण initalize

data: function() { 
 
      return { 
 
       currentView: patientDetailsEdit, 
 
      }

आप भी माध्यम से घटक संदर्भित कर सकते हैं यदि आप आर घटक हैं तो नाम संपत्ति यह

currentProperties: function() { 
 
       if (this.currentView.name === 'Personal-Details-Edit') { 
 
        return { mode: 'create' } 
 
       } 
 
      }

संबंधित मुद्दे