【问题标题】:Vue.js - Push to object without trackingVue.js - 推送到对象而不跟踪
【发布时间】:2017-01-31 11:14:42
【问题描述】:

我有一个名为Attendees 的对象和另一个名为TempAttendee 的对象。一个表单绑定到TempAttendee,当用户提交该表单时,它接受TempAttendee 并将其推送到Attendees

问题在于,由于反应性,对表单的任何进一步更改都会在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>

【问题讨论】:

    标签: javascript object components vue.js


    【解决方案1】:

    推送副本并可能清除温度。

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

    【讨论】:

    • 我不确定如何将您的建议应用到我的代码中,我已经更新了我的问题以包含它。我不想在tempAttendee 对象中创建与会者的副本,但反过来,将tempAttendee 添加到Attendees 对象中。
    • 好的。在您的代码之前还不清楚。然后只需将临时副本推送给与会者
    • 啊,太近了,我错过了Object.assign,谢谢你的帮助!
    猜你喜欢
    • 1970-01-01
    • 2019-05-09
    • 1970-01-01
    • 2012-11-24
    • 2020-08-21
    • 1970-01-01
    • 2021-12-03
    • 2018-02-17
    • 1970-01-01
    相关资源
    最近更新 更多