2016-01-22 8 views
15

मैं एक घटक और एक इनपुट युक्त Vue.js के साथ एक घटक बनाना चाहता हूँ। उदाहरण के लिए:Vue.js: प्रत्येक घटक उदाहरण के लिए एक अद्वितीय आईडी कैसे सेट करें?

<label for="inputId">Label text</label> 
<input id="inputId" type="text" /> 

मैं कैसे प्रत्येक घटक उदाहरण के लिए एक अद्वितीय ID सेट कर सकते हैं?

धन्यवाद।

उत्तर

32

प्रत्येक घटक में एक अद्वितीय आईडी है जिसे this._uid के रूप में उपयोग किया जा सकता है।

<template> 
    <div> 
    <label :for="id">Label text for {{id}}</label> 
    <input :id="id" type="text" /> 
    </div> 
</template> 

<script> 
export default { 
    data() { 
    return { 
     id: null 
    } 
    }, 
    mounted() { 
    this.id = this._uid 
    } 
} 
</script> 

यदि आप उन उदाहरणों पर अधिक नियंत्रण चाहते हैं जो आप उदाहरण के लिए कर सकते हैं, उन्हें मूल घटक के अंदर उत्पन्न करें।

+2

वाह, इतना आसान। धन्यवाद! – PierreB

+0

मैं इस के लिए देख रहे वू दस्तावेज़ों के माध्यम से पढ़ रहा हूं। मुझे खुशी है कि आपने इसे पोस्ट किया है! – Curtis

+0

ध्यान दें कि 'तैयार' विधि को वू 2.0 और उसके बाद में हटा दिया गया था। जब मैं 'तैयार' विधि निष्पादित नहीं कर रहा था तो मैं बहुत उलझन में था। http://stackoverflow.com/a/40209796/126751 –

0

यह इस पैटर्न (वू 2.0 वी-बाइंड) का उपयोग करके भी हासिल किया जा सकता है, इसलिए मान लें कि आपके पास आइटम्स की एक सूची है और आप कुछ डोम तत्व अनिनक आईडी देना चाहते हैं।

new Vue({ 

    el:body, 
    data: { 
    myElementIds : [1,2,3,4,5,6,8] 
    } 
}) 

एचटीएमएल

<div v-for="id in myElementIds"> 
    <label v-bind:for="id">Label text for {{id}}</label> 
    <input v-bind:id="id" type="text" /> 
<div> 

आशा है कि यह मदद करता है

+4

आप सरणी में आईडी को परिभाषित कर रहे हैं। मूल प्रश्न को बिल्कुल हल नहीं करता है। – arminrosu

2

Vue2 में, उपयोग v-बाँध।

हालांकि zxzak का जवाब बहुत अच्छा है मैं एक सर्वेक्षण

<div class="options" v-for="option in poll.body.options"> 
    <div class="poll-item"> 
     <label v-bind:for="option._id" v-bind:style="{color: option.color}">{{option.text}}</label> 
     <input type="radio" v-model="picked" v-bind:value="option._id" v-bind:id="option._id"> 
    </div> 
    </div> 
7

के लिए एक वस्तु है कहो; _uid एक प्रकाशित एपीआई संपत्ति नहीं है। भविष्य में बदलाव होने पर सिरदर्द को बचाने के लिए, आप नीचे दिए गए प्लगइन समाधान के साथ केवल एक ही परिवर्तन के साथ अपना कोड अपडेट कर सकते हैं।

Vue.use({ 
    install: function(Vue, options) { 
     Object.defineProperty(Vue.prototype, "uniqId", { 
      get: function uniqId() { 
       return this._uid; 
      } 
     }); 
    } 
}); 
संबंधित मुद्दे