Actualizar
Publiqué el vue-única-id Vue Plugin para esto en la NGP .
Responder
Ninguna de las otras soluciones aborda el requisito de tener más de un elemento de formulario en su componente. Aquí está mi opinión sobre un complemento que se basa en respuestas dadas anteriormente:
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;
};
});
Esto no depende de la _uidpropiedad interna que está reservada para uso interno .
Úselo así en su componente:
<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" />
Para producir algo como esto:
<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" />