Динамическая модель как массив в vue.js.Как очистить неиспользуемые входы? - PullRequest
0 голосов
/ 09 октября 2018

Моя модель хранится в Vuex как массив объектов и индекс текущего элемента.Затем в моем компоненте я использую эти две информации, чтобы установить значение для множества входных данных для текущей модели из массива.

Моя проблема в том, что когда я устанавливаю значение для какого-либо поля (свойство текущего объекта из массива) и меняю индекс текущего элемента на другое, эта новая модель не имеет этого свойства в объекте (модельдинамический объект без предопределенных полей), поэтому старое значение остается на входе до тех пор, пока я не вернусь к индексу, где я установил это значение, а затем при переходе на другое оно исчезнет.

Store

const state = {
  data: {
    fields: [],
  },
  currentField: -1
}

const mutations = {
  updatField (state, obj) {
    state.data.fields[state.currentField][obj.attr] = obj.value
  },
  setCurrentField (state, value) {
    state.currentField = value
  },
}

Просмотр

<template>
  <v-form ref="form">
    <v-text-field v-for="attr in fieldsDefinition" :key="attr.label"
      :value="field['attr'][attr.label]"
      :label="attr.label"
      @input="update(label)"
      ></v-text-field>
  </v-form>
</template>

<script>    
export default {
  store,
  components: { field },
  mixins: [ fieldsDefinition],
  data () {
    return {
      fieldsDefinition: this.getFieldsDefinition()
    }
  },
  methods: {
    update (attr) {
      this.$store.commit(this.change, { attr, value: event.target.value })
    },
    select (index, type) {        
      this.$store.commit('setCurrentField', index)
    }
  }
  computed: {
    ...mapState({
      field: state => state.data.fields[state.currentField],
      currentField: state => state.currentField
    })
  }
}
</script>

( this.getFieldsDefinition () возвращает определение отображаемых полей, содержит метку для поля и т. Д..)

...