AndrewHaze
@AndrewHaze
Умею гуглить яндексом

Как отследить в watch такую v-model: v-model="props.item.dsec_declarant_kind"?

Шаблон VueTIFY:

<v-data-table
          :headers="dsec_headers"
          :items="dsec"
        >
         <template v-slot:items="props">
            <tr :id="'row'+props.item.dsec_nnn" @click="mainTableRowClick(props.item.dsec_nnn)">
              <td>
                <div>{{ props.item.dsp_inf }}</div>
              </td>
              <td>
                <div>{{ props.item.dsec_nnn }}</div>
              </td>
              <td>
                <v-select
                  v-model="props.item.dsec_declarant_kind"
                  :items="ddk"
                  item-text="ddk_name"
                  item-value="ddk_code"
                  solo
                  flat
                  hide-details
                  single-line
                  menu-props="auto"
                ></v-select>
              </td>
            </tr>
          </template>
</v-data-table>
  • Вопрос задан
  • 340 просмотров
Пригласить эксперта
Ответы на вопрос 2
0xD34F
@0xD34F Куратор тега Vue.js
Можно сделать computed свойство из этих dsec_declarant_kind:

computed: {
  declarantKind() {
    /*
     *  я так понимаю, dsec_nnn - штука уникальная, раз вы её используете при назначении id,
     *  так что используем её для связи отслеживаемых значений с элементами исходного массива
     */
    return this.dsec.map(n => [ n.dsec_nnn, n.dsec_declarant_kind ]);
  },
},

И отслеживать его:

watch: {
  declarantKind(newVal, oldVal) {
    const
      // найдём идентификатор изменившегося значения
      nnn = oldVal.find((n, i) => n[1] !== newVal[i][1])[0],
      // и сам элемент, в котором произошли изменения
      item = this.dsec.find(n => n.dsec_nnn === nnn);
  },
},
Ответ написан
Paramid
@Paramid
watch: {
  'props.item.dsec_declarant_kind': function (after, before) {
    // код
  }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы