Ich habe viele Formulare in einer Webanwendung zu erstellen, an der ich arbeite, für die ich Vue verwende, also habe ich versucht, eine generische Eingabekomponente zu erstellen, die ich verwenden kann während. Ich benutze Bootstrap-Grids, daher sollte ich in der Lage sein, der Komponente eine Anzahl von Spalten zu übergeben, ein Label, einen Namen und eine Eigenschaft, die als V-Modell verwendet werden. Ich denke, aber ich stoße auf ein Problem mit der Mutation von Requisiten - [Vue warn]: Vermeide es, eine Requisite direkt zu mutieren, da der Wert immer dann überschrieben wird, wenn die Parent-Komponente erneut rendert. Verwenden Sie stattdessen eine Daten oder eine berechnete Eigenschaft basierend auf dem Wert des Props. Prop wird mutiert: "Modell" (in der Komponente gefunden). Hier ist die Vorlage (in vereinfachter Form):Ich versuche, generische Eingabekomponente zu erstellen
<template id="field">
<div v-bind:class="colsClass">
<div class='form-group form-group-sm'>
<label v-bind:for="name">{{labelText}}</label>
<input v-bind:id='name' ref="input" class='form-control' v-bind:name='name' v-model='model'/>
</div>
</div>
Und hier ist der (wieder vereinfacht) JS:
Vue.component('field', {
template: '#field',
props: ['cols','label','group','name','model'],
computed:{
colsClass:function(){
return "col-xs-"+this.cols
}
,
labelText:function(){
if(this.label) {
return this.label
} else {
return _.startCase(this.name);
}
}
}
});
Dies aus einer anderen 'edit-Produkt' Komponente verwendet wird, wie folgt:
Dies zeigt OK, aber wirft den Fehler (oder genauer (ely, warning), wenn ich den Wert des Feldes bearbeite. Was mache ich falsch?