在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ vue如何修改data屬性?

vue如何修改data屬性?

var app = new Vue({
        el: "#app",
        data: {
            name:"", // 商家名稱
            imageUrl:"", // 入門店圖片
            description:"", // 商家描述
            address:"", // 商家地址
            wifiName: "",
            wifiPassword: "",
            phone: "", // 聯(lián)系方式
            businessesLicence:"", // 營業(yè)執(zhí)照
            registerNum:"", // 請傳入注冊號
            idCardBack: "",
            idCardFront: "",
            idCardHand: "",
            provideInvoice:"", // 是否提供發(fā)票
            businessTime:"", // 營業(yè)時間
        },
        mounted: function(){
        },
        methods: {
            // 請問如果對下面的方法進行封裝?(因為他們的邏輯都是一樣的)
            imageUrlUpload: function(e){
                // 上傳門店圖片
                var self = this;
                var file = e.target.files[0];
                if (!(file.type.indexOf('image')>-1)) {
                    alert('請選擇圖片格式');
                    self.imageUrl = "";
                    return;
                }
                var toekn = getCookie('access_token');
                var fd = new FormData();
                fd.append('file', e.target.files[0]);
                var xhr = new XMLHttpRequest();
                xhr.onreadystatechange = function(){
                    console.log(xhr.status);
                    if (xhr.status === 200 && xhr.readyState === 4) {
                        self.imageUrl = JSON.parse(xhr.responseText).data;
                    }
                };
                xhr.open('post', '/api/upload');
                xhr.setRequestHeader("enctype", "multipart/form-data");
                xhr.setRequestHeader("Authorization", "bearer "+toekn);
                xhr.send(fd);
            },
            businessesLicenceUpload: function(){
                // 上傳營業(yè)執(zhí)照

            },
            idCardFrontUpload: function(){
                // 上傳正面身份證

            },
            idCardBackUpload: function(){
                // 上傳反面身份證

            },
            idCardHandUpload: function(){
                // 上傳持證照
            },
            uploadimg: function(e, fields){
                var self = this;
                var file = e.target.files[0];
                if (!(file.type.indexOf('image')>-1)) {
                    alert('請選擇圖片格式');
                    self.fields = ""; // 這里有問題 會去添加一個fields,而不是我想要的(修改self.xxx)
                    return;
                }
                var toekn = getCookie('access_token');
                var fd = new FormData();
                fd.append('file', e.target.files[0]);
                var xhr = new XMLHttpRequest();
                xhr.onreadystatechange = function(){
                    console.log(xhr);
                    if (xhr.status === 200 && xhr.readyState === 4) {
                        console.log(xhr);
                        // 修改data的時候,一般是`this.xx`,但是我使用的`fields`這種的,會去添加一個fields
                        self.fields = JSON.parse(xhr.responseText).data;
                    }
                };
                xhr.open('post', '/api/upload');
                xhr.setRequestHeader("enctype", "multipart/form-data");
                xhr.setRequestHeader("Authorization", "bearer "+toekn);
                xhr.send(fd);
            },
            submit: function(){
                alert(1);
            }
        }
    });

之前的html調(diào)用時 <input type="file" v-on:click="imageUrlUpload($event)">,
我想改成 <input type="file" v-on:click="uploadimg($event, fields)">,

回答
編輯回答
逗婦惱

1.代碼邏輯問題在
self.fields = "";
這個只會訪問'fields'這個成員而不是參數(shù)定義的fields
改為 self[fields]才能操作
2.你的做法需要vue實例一開始建立初始化數(shù)據(jù)的fields有才能得到監(jiān)聽。
你所訪問的this.xxx,事實上是vue自身代理出來的實例“快捷方式”。
使用vue的時候多考慮一下數(shù)據(jù)驅(qū)動的思路。不要為了封裝而封裝。
3.不要使用alert,alert會全局阻塞

2017年10月25日 15:29
編輯回答
晚風眠

什么不管用,表達什么

2018年4月19日 03:50