2016-07-26 12 views
5

से व्यू में घटकों के गणना गुणों तक पहुंचने से आप माता-पिता से वू में घटकों के गणना गुणों तक कैसे पहुंच सकते हैं?पैरेंट

इस उदाहरण में, मैं आइटम घटकों के साथ एक गाड़ी है और मैं गणना और गाड़ी आइटम का कुल योग प्रदर्शित करना चाहते हैं:

cart.js

var vm = new Vue({ 

    el: '#cart', 

    components: { 
    cartItem: require('./components/cart-item.js'), 
    }, 

    data: { 
    items: [ 
     { name: 'apple', qty: 5, price: 5.00 }, 
     { name: 'orange', qty: 7, price; 6.00 }, 
    ], 
    }, 

    computed: { 
    // I want to do something like this and access lineTotal from cart 
    cartTotal: function() { 
     return this.items.reduce(function(prev,curr) { 
     return prev + curr.lineTotal; 
     }, 0) 
    } 
    } 
}); 

गाड़ी-item.js

module.exports = { 
    template: require('./cart-item.template.html'), 
    props: ['fruit'], 
    computed: { 
     lineTotal: function() { 
     return this.fruit.price * this.fruit.qty; 
     } 
    }, 
}; 

मुख्य एचटीएमएल

<li v-for="item in items" is="cart-item" :fruit="item"> 

... 

@{{ cartTotal }} 

cartTotal को संक्षेप में उपयोग करने के लिए प्रत्येक कार्ट-आइटम के lineTotal गुणों का उपयोग कैसे करूं?

ध्यान दें कि मैं lineTotal में किए गए गणना को फिर से नहीं करना चाहता हूं बल्कि इसके बजाय गणना की गई संपत्तियों का उपयोग सीधे करें।

+0

के साथ बच्चों के गुणों को हल करते हैं, जबकि @ गर्गेट ने आपको तकनीकी रूप से सही उत्तर प्रदान किया है, तो मैं इस तरह की चीजों के लिए बच्चों तक पहुंचने के खिलाफ सलाह दूंगा। गणना के लिए आवश्यक सभी डेटा पहले से ही कार्ट में मौजूद है, और गणना मूल रूप से एक-लाइनर है। बच्चों से डेटा तक पहुंचने से कम से कम उतना ही जटिल होगा जितना कि माता-पिता में गणना करना ही उतना ही जटिल होगा। –

+0

कार्ट एक मामूली उदाहरण है जिसका उपयोग मैंने अपनी समस्या की प्रकृति को चित्रित करने के लिए किया था। अगर गणना समय-समय पर एक-लाइनर नहीं होती, तो घटकों को कार्ट आइटम के लिए तर्क को कम करने का एक अच्छा तरीका होगा। क्या आपके पास माता-पिता पर गणना किए बिना सीधे बच्चे तक पहुंचने के अलावा कोई सुझाव है? – howellmartinez

उत्तर

6

आपको बच्चों को नाम देना होगा, उदाहरण के लिए v-ref निर्देश के माध्यम से। फिर माता-पिता से आप this.$refs.mychild.myproperty

+0

यह। $ Refs मेरे लिए एक खाली ऑब्जेक्ट {} देता है। क्या मुझे कुछ याद आ रही है? – howellmartinez

+0

क्या आपने वी-रेफ सेट किया है? – gurghet

+0

हर्म ... मैंने अभी आपके jsfiddle देखा ... 1 से अधिक चीज़ इसके साथ गलत है। आप सादा जावास्क्रिप्ट में फ़िल्टर ('| json') का उपयोग कर रहे हैं, आप एक सामान्य' 'तत्व का इलाज कर रहे हैं जैसे कि यह एक घटक था। मुझे बात है कि आपको एक पूरा उदाहरण दिखाना बेहतर होगा ताकि आप इसे ठीक करने के बजाय उससे सीख सकें, जो समस्या के लिए कुछ अजीब दृष्टिकोण दिखाता है। मैं आपको इस चैट रूम में लिंक भेजूंगा: https://chat.stackoverflow.com/rooms/118302/vuejs – gurghet