当前位置:  开发笔记 > 编程语言 > 正文

将数据属性的副本传递给Vue JS中的函数

如何解决《将数据属性的副本传递给VueJS中的函数》经验,为你挑选了1个好方法。

我有一个简单的vue实例,我用它来生成Stripe标记.

它看起来像这样:

var vm = new Vue({
        el: '#checkout-form',
        data: {
            stripe_publishable_key: '{{ config('services.stripe.publishable') }}',
            card: {
                number: null,
                cvc: null,
                exp: null,
            },
        },
        ready: function() {    
            Stripe.setPublishableKey(this.stripe_publishable_key);
        },
        methods: {
            getStripeToken: function() {
                Stripe.card.createToken(this.card, this.stripeResponseHandler);
            },
            stripeResponseHandler: function(status, response) {
                // Process response
            },
        },       
    });

基本上我将cardVue实例中的对象(绑定到某些表单输入)传递给Stripe的card.createToken方法.这应该接受输入并调用处理程序,并在响应时传入响应.

这一切都正常,除了card.createToken修改卡对象并导致我的Vue实例上的卡对象发生更改 - 它插入自己的属性并导致绑定上的奇怪行为.

有没有办法将cardvue属性作为未绑定到vue实例的副本传递给Stripe,因此不会因此而改变?

更新

从本质上讲,这种情况正在发生,因为JavaScript将对象作为引用副本传递,这意味着原始对象可以被接收它的任何函数修改.显而易见的解决方案是通过循环或其他方式克隆对象,但我想知道在Vue中是否有更好的方法.



1> oleh.meleshk..:

有很多方法可以复制这个对象,但只有一个来自Vue本身:

var cardCopy = Vue.util.extend({}, this.card);

它实际上相当于jQuery的扩展,深度设置为true.

推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有