2015-12-13 14 views
10

Ich habe ein Formular, das durch ein v-for generiert wird.Berechnet/Dynamisch V-Modell Name innerhalb von V-für

Hinweis: Ich benutze "@", um Klinge zu entkommen.

Mein vue isstance hat:

data: { 
    form: { 
     inputs: [{icon: "", name="", placeholder: "", type="", value=""}] 
    }, 
    owner: {first_name: "", last_name: "", cell_phone: "", email: ""} 
} 

I erzeugen, um die Form mit:

<template v-for="input in form.inputs"> 
    <div style="margin-bottom: 25px" class="input-group"> 
     <span class="input-group-addon"><i class="glyphicon [email protected]{{input.icon}}"></i></span> 
     <input id="[email protected]{{input.name}}" v-model="?????" type="@{{input.type}}" class="form-control" name="@{{input.name}}" placeholder="@{{input.placeholder}}"> 
    </div> 
</template> 

Ich mag jeden Eingang zu ihrer jeweiligen Auftragnehmer Eigenschaft binden. Daher möchte ich, dass die v-models-Werte owner.first_name, owner.last_name, owner.cell_phone und owner sind. Email. Ich habe gehofft, ich könnte tun:

v-model="'owner' + @{{input.name}}" 

Aber ich bekomme:

[Vue warn]: v-model="'owner' + {{input.name}}": attribute interpolation is not allowed in Vue.js directives and special attributes. 
vue.js:1956 Error: Warning Stack Trace 
    at warn (vue.js:1956) 
    at Directive.bind (vue.js:4507) 
    at Directive._bind (vue.js:8668) 
    at linkAndCapture (vue.js:7367) 
    at compositeLinkFn (vue.js:7345) 
    at new Fragment (vue.js:5373) 
    at FragmentFactory.create (vue.js:5575) 
    at Directive.create (vue.js:5844) 
    at Directive.diff (vue.js:5757) 
    at Directive.update (vue.js:5692) 

Die Eigentümer Objekte, die den input.name für jeden Eingang entsprechen.

Dank

Beschreibung der App: Ich versuche, einen Eigentümer durch die Verwendung mehrerer Formen zu bauen. Jedes Formular wird durch eine jax-Anforderung generiert, die ein Formularobjekt abruft, das die Eingaben n und die Aktion für dieses Formular enthält.

Antwort

16

Sie können diese versuchen:

v-model="owner[input.name]" 
+0

Das funktioniert! Danke! – Deciple

Verwandte Themen