Konstantin18ko
@Konstantin18ko
Стоматолог

Как создать новый объект в VueJS?

Vue.component('list_appointments', {
    delimiters: ['{>', '<}'],
    template: '#list_appointments-template',
    data: function () {
        return {
            active_list_appointments_template: false,
            drug: {
                id: null,
                patient: null,
                disease_history: null,
                drug: null,
                start_day: null,
                end_day: null,
                is_delete: false,
            },
            list_appointments_drugs: [],
        }
    },
    methods: {
        addDrug: function () {
            // хочу добавить в list_appointments_drugs новый объект drug, но получается что добавляю модель
            this.list_appointments_drugs.unshift(this.drug)
        },
        editDrug: function () {

        },
        deleteDrug: function () {

        },
        openTemplate: function () {
            this.active_list_appointments_template = true
        },
        closeTemplate: function () {
            this.active_list_appointments_template = false
        },
        onCancel: function () {
            this.close()
        },
        onConfirm: function () {
            this.close()
        }
    },
    beforeCreate: function () {
        var self = this
        //Профиль пациента
        axios.get('http://' + window.location.host + '/api/patients/' + document.getElementById('id_patient').innerText + '/?format=json').then(function (response) {
            self.patient = response.data
        }).catch(function (error) {
            console.log(error);
        });
        //Текущая история болезни
        axios.get('http://' + window.location.host + '/api/disease_stories/' + document.getElementById('id_disease_history').innerText + '/?format=json').then(function (response) {
            self.disease_history = response.data
        }).catch(function (error) {
            console.log(error);
        });
    }
})
  • Вопрос задан
  • 318 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега Vue.js
// хочу добавить в list_appointments_drugs новый объект drug, но получается что добавляю модель
this.list_appointments_drugs.unshift(this.drug)

Надо делать копию объекта:

this.list_appointments_drugs.unshift({ ...this.drug })

А вообще, раз уж сказали "модель"... Добавьте в компонент свойство - объект, который будет содержать дефолтные значения. И копируйте его в drug, когда необходимо начать редактирование нового объекта (т.е., при создании экземпляра компонента и после добавления в массив):

data: () => ({
  drug: null,
  defaultDrugData: {
    ...
  },
  ...
}),
created() {
  this.resetDrug();
},
methods: {
  addDrug() {
    this.list_appointments_drugs.unshift(this.drug);
    this.resetDrug();
  },
  resetDrug() {
    this.drug = { ...this.defaultDrugData };
  },
  ...
},
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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