2016-12-13 15 views
7

मैं vue.js. के लिए नया हूं। मैं अपने angularjs ऐप माइग्रेट करना शुरू कर रहा हूँ। मैं एक नया सरल-वेबपैक प्रोजेक्ट उत्पन्न करने के लिए वू क्ली का उपयोग कर रहा हूं। यह एक नया वेबपैक + vueLoader प्रोजेक्ट बनाता है। सब कुछ सुचारू रूप से चला गया लेकिन अब मुझे कोई समस्या है। मेरे @click ईवेंट पर मैं अपना डेटा बदलना चाहता हूं लेकिन मैं ऑब्जेक्ट तक नहीं पहुंच सकता। 'यह' डेटा उदाहरण नहीं है।किसी विधि के अंदर से डेटा का उपयोग कैसे करें

मुझे यहां क्या याद आ रही है?

<template> 
    <input type="radio" name="account-type" @click="setAccountType(item.id)"/><span>{{item.name}}</span> 
</template> 
<script> 
    export default { 
    data() { 
     return { accountType: null 
    }, 
    methods: { setAccountType: (typeId) => this.accountType = typeId 
    } 
</script> 

यह अपेक्षित डेटा उदाहरण नहीं है और इस प्रकार ui अपडेट नहीं किया गया है। vuejs doc में मैं केवल यह निर्दिष्ट कर सकता हूं कि यह एक विधि में पर्याप्त है: vue js doc

किसी भी मदद की सराहना की जाती है।

दयालु संबंध।

उत्तर

15

आप एक तीर समारोह का उपयोग नहीं कर सकते हैं एक Vue उदाहरण के अंदर this का उल्लेख करने क्योंकि thiswindow को संदर्भित करता है Vue उदाहरण डेटा प्राप्त करने, सही ES6 वाक्य रचना है:

तीर समारोह के साथ
setAccountType(typeId){ 
    this.accountType = typeId 
} 

JSFiddle: https://jsfiddle.net/zxqohh0L/

गैर तीर ES6 फ़ंक्शन के साथ JSFiddle: https://jsfiddle.net/zxqohh0L/1/

आप अभी भी विधियों के अंदर तीर फ़ंक्शंस का उपयोग कर सकते हैं खुद।

+0

उत्कृष्ट उत्तर। –

+0

प्रयास के लिए बहुत बहुत धन्यवाद, बहुत अच्छा स्पष्टीकरण, मैं तीर फ़ंक्शन के साथ फ़ंक्शन के अंदर डेटा तक पहुंचने के लिए खुदाई कर रहा था। आपके उत्तर ने वास्तव में मेरी समस्या को ठीक किया और बेहतर समझने में भी मदद की। – krrr25

+0

बहुत बहुत धन्यवाद! इस पर दो घंटे बर्बाद हो गए। यह मुझे पागल बना रहा था। –

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

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