Closed kobs30 closed 4 years ago
How to create array of text values instead of array of objects?
Sorry this is not possible:
v-form-base
can hold any value only as key-value pair and in context with an component (ie text-field). This is also valid for items in an array. In case of using strings you can't keep - in lack of a key - reference to each object in array for being editable.
One Solution could be to map on blur event your result to an array of strings
Or if you have an static array of strings you can use type 'Select', 'Autocomplete' or 'Combobox'
'Select', 'Autocomplete' or 'Combobox' these widgets are well for selecting terms from vocabulary. I need widget to create|edit terms in vocabulary, I need some kind of https://github.com/gwenaelp/vfg-field-array
Ok did you look at the example 'Add, Edit and Drag to Remove Items in dynamic nested Value-Array' this should meet your requirements.
Use the change-event in vFormBase to map your values-array into a string-array
stringValues = this.model.values.map( v => v.value)
demo.vue
<template>
<div>
<v-form-base
:model="myModel"
:schema="mySchema"
@change="map"
/>
String-Array:
{{stringArray}}
</div>
</template>
<script>
import VFormBase from '@/components/vFormBase'
export default {
components: { VFormBase },
data () {
return {
stringArray:[],
myModel: {
values:[
{ value:'my value' }
]
},
mySchema: {
values: {
type: 'array',
schema: {
value: 'text'
}
}
}
}
},
methods: {
map ( ) {
this.stringArray = this.myModel.values.map( v => v.value)
}
}
}
</script>
I guess another option is to write a custom editor for this type.
here is a working example.
Use with this schema:
const schema = { telephones: {
type: "array-editor",
label: "Telephones",
}}
@husayt great work on the custom editor. I took your example and it worked. Here is how it looks for my simple array of prices:
This works
model: { values: [{}, {}, {}] }, schema: { name: { type: 'text', label: 'Name', }, values: { type: 'array', schema: { value: 'text' } } }
How to create array of text values instead of array of objects? Next does not work:
model: { values: ['','',''] }, schema: { name: { type: 'text', label: 'Name', }, values: [ type: 'text', ] }
I need to create in example select2 field with tag style. Autocomlete + create not existing.