Güncelleme
Bunun için vue-unique-id Vue eklentisini npm'de yayınladım .
Cevap
Diğer çözümlerden hiçbiri, bileşeninizde birden fazla form öğesi olması gerekliliğini karşılamaz. İşte benim daha önce verilen cevaplara dayanan bir eklenti:
Vue.use((Vue) => {
// Assign a unique id to each component
let uuid = 0;
Vue.mixin({
beforeCreate: function() {
this.uuid = uuid.toString();
uuid += 1;
},
});
// Generate a component-scoped id
Vue.prototype.$id = function(id) {
return "uid-" + this.uuid + "-" + id;
};
});
Bu, dahili kullanım için ayrılmış dahili _uidözelliğe bağlı değildir .
Bileşeninizde şu şekilde kullanın:
<label :for="$id('field1')">Field 1</label>
<input :id="$id('field1')" type="text" />
<label :for="$id('field2')">Field 2</label>
<input :id="$id('field2')" type="text" />
Bunun gibi bir şey üretmek için:
<label for="uid-42-field1">Field 1</label>
<input id="uid-42-field1" type="text" />
<label for="uid-42-field2">Field 2</label>
<input id="uid-42-field2" type="text" />