2016-10-09 15 views
8

मैं इतनी तरह मेरे कोड के साथ एक ग्राहक के पक्ष js फ़ाइल का संदर्भ देता है एक टेम्पलेट लोड हो रहा हूँ संदर्भित:vue.js - उदाहरण पर नहीं परिभाषित लेकिन दौरान प्रस्तुत करना

<!DOCTYPE html> 
<html> 
<head> 
    <script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.0.1/vue.js"></script> 
    <link rel="stylesheet" type="text/css" href="../css/app.css"> 

</head> 
<body> 
<div id="container"> 
    <div id="map"> 
    <script src="../js/app.js" type="text/javascript"></script>  
    <div id="offer-details"> 
    <form id="offer-form" v-on:submit="makeOffer(tags, description, code)"> 
     <input id="description"/> 
     <input id="tags"/> 
     <input id="code"/> 
     <input type="submit"/> 
    </form> 
    </div> 
    </div> 
</div> 

</body> 

</html>  

मेरे ब्राउज़र पता चलता है कि (विवरण निम्नलिखित। जेएस) सफलतापूर्वक लोड करता है।

var vm = new Vue({ 
    el: "#details", 
    data: { 
    offer: { 
      publickey: '', 
      privatekey: '',   
      name: '', 
      service: '', 
      value: '', 
      currency: '', 
      tags: '', 
      description: '', 
      code: '' 
    },    
    methods: { 
     makeOffer: function makeOffer(){console.log(vm.publickey)} 

    } 
    } 
}) 

हालांकि, जब मैं प्रपत्र मैं निम्नलिखित त्रुटि संदेश प्राप्त कर सबमिट करें:

[Vue warn]: Property or method "makeOffer" is not defined on the instance but referenced during render. Make sure to declare reactive data properties in the data option. (found in root instance)vue.js:2574:7 

[Vue warn]: Handler for event "submit" is undefined. 

यह मेरे लिए लगता है जैसे मैं के रूप में मैं चाहिए विधि कुंजी में makeOffer को परिभाषित कर रहा हूँ। क्या यह उदाहरण पर इसे परिभाषित करने जैसा नहीं है? यह MakeOffer क्यों नहीं देख रहा है?

+0

आपकी परियोजना संरचना कैसी दिखती है? –

+0

मुझे यह त्रुटि मिली क्योंकि मैंने अपनी घटक फ़ाइल –

उत्तर

8

आप चाहते हैं यह सुनिश्चित करने के लिए कि makeOffer विधियों के विकल्प के अंदर है (जो स्वयं डेटा विकल्प के बाहर है)। अभी आपके पास डेटा विकल्प के अंदर विधियों का विकल्प है। साथ ही, आप vm.publickey का उपयोग करके लॉग इन नहीं कर सकते; इसके बजाय, आपको this.offer.publickey का उपयोग करना चाहिए।

+0

उस स्थान को खोजने के लिए धन्यवाद, यह समस्या है क्योंकि कोई और त्रुटि नहीं है। हालांकि, मेरा मेकऑफर फ़ंक्शन अभी भी काम नहीं कर रहा है क्योंकि कंसोल में कुछ भी लॉग नहीं है। –

4

ठीक है, मुझे यकीन है कि मैं समझ गया कि आप क्या करना चाहते थे नहीं कर रहा हूँ, लेकिन मैं चीजों को एक साथ आबद्ध ...

यहाँ एक काम का टुकड़ा है:

var vm = new Vue({ 
 
el: "#details", 
 
data: { 
 
    offer: { 
 
     publickey: '', 
 
     privatekey: '',   
 
     name: '', 
 
     service: '', 
 
     value: '', 
 
     currency: '', 
 
     tags: '', 
 
     description: '', 
 
     code: '' 
 
    } 
 
},    
 
methods: { 
 
    makeOffer() { 
 
    console.log(this.offer) 
 
    } 
 
} 
 
    });
<script src="https://unpkg.com/vue/dist/vue.js"></script> 
 

 
<div id="container"> 
 
    <div id="map"> 
 
<div id="details"> 
 
    <form id="offer-form" v-on:submit="makeOffer"> 
 
    <input v-model="offer.description" /> 
 
    <input v-model="offer.tags" /> 
 
    <input v-model="offer.code"/> 
 
    <input type="submit"/> 
 
    </form> 
 
</div> 
 
    </div> 
 
</div>

+0

में टैग '' टैग बंद नहीं किया था, जब फॉर्म सबमिट करता है तो मैं मेकऑफर विधि को कॉल करने का प्रयास कर रहा हूं। यह अभी भी मुझे बताए गए त्रुटि संदेशों के कारण ऐसा करने नहीं देता है। –

+1

उपरोक्त कोड स्निपेट मेकॉफ़र फ़ंक्शनन सबमिट करता है और इसमें कोई त्रुटि नहीं है –

+0

धन्यवाद, मुझे इस तथ्य को याद आया कि आपके पास डेटा के बाहर परिभाषित विधियां थीं, यही समस्या थी। –

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