2017-01-31 4 views
0

У меня есть объект под названием Attendees и еще один объект с именем TempAttendee. Форма привязана к TempAttendee, и когда пользователь отправляет эту форму, она принимает TempAttendee и толкает ее до Attendees.Vue.js - Push на объект без отслеживания

Проблема в том, что любые дальнейшие изменения в форме будут редактировать этого участника в объекте Attendees из-за реактивности. Как я могу обойти это?

<template> 
    <div> 
     <ul class="attendeeEditor"> 
      <li class="attendeeEditor__attendee" v-for="(attendee, index) in attendees"> 
       <span class="attendeeEditor__field">{{ attendee.email }}</span> 
      </li> 
      <li class="attendeeEditor__attendee attendeeEditor__form">    
       <input v-on:keydown.enter="addAttendee" class="attendeeEditor__field" placeholder="Email Address..." type="email" v-model="tempAttendee.email" required /> 
      </li> 
     </ul> 
    </div> 
</template> 

<script> 
    export default { 
     name: 'attendee-picker', 
     data: function() { 
      return { 
       attendees: {}, 
       tempAttendee: { 
        email: "" 
       } 
      } 
     }, 
     methods: { 
      addAttendee: function(event) { 
       this.attendees.push(this.tempAttendee); 
      } 
     } 
    } 
</script> 

ответ

1

Пульт-копия и, возможно, четкая темп.

methods: { 
      addAttendee: function(event) { 
       this.attendees.push(Object.assign({}, this.tempAttendee)); 
       this.tempAttendee = { email: '' } 
      } 
+0

Я не уверен, как применить свое предложение к моему коду, я обновил свой вопрос, чтобы включить его. Я не хочу создавать копию участника в объект tempAttendee, но наоборот, добавьте 'tempAttendee' в объект' Attendees'. – KeironLowe

+0

Хорошо. Перед вашим кодом не было ясно. Затем просто нажмите копию темпа для посетителей –

+1

Ahh так близко, просто «Object.assign» мне не хватало, спасибо за вашу помощь! – KeironLowe

Смежные вопросы