vue項目中 如何讓外部引入的js模塊 的this值 指向vue實例


當前是vue項目,想在tool.js(工具模塊)中封裝一個跳轉頁面的方法,

goToUrl(name,query){
        if(query){
            if(query.addressCode){
                vueObject.$router.push({name:name,query:query});
            }else{
                query.addressCode = this.getParam('addressCode');
                this.$router.push({name:name,query:query});
            }
        }else{
            var query = {};
            query.addressCode = this.getParam('addressCode');
            this.$router.push({name:name,query:query});
        }
    }

上面使用router,query傳參的方式實現頁面跳轉

然后我在vue頁面中調用,此方法如:

query.addressCode = tool.getAddressCode();
query.groupId = id;
tool.goToUrl('productDetails',query);

之后報錯就來了,提示:push是undefined

然后console了一下goToUrl()方法里面的this,指向的是tool.js整個模塊對象!

知道問題所在后,剩下的就是解決了,如何讓goToUrl()方法中的this指向vue實例呢?

我第一個想到的就是,在調用tools.js的頁面  將vue實例傳給 該方法,我們只需要在方法內多加一個參數,將vue實例傳過來就行了,看后續代碼:

goToUrl(vueObject,name,query){
        if(query){
            if(query.addressCode){
                vueObject.$router.push({name:name,query:query});
            }else{
                query.addressCode = this.getParam('addressCode');
                vueObject.$router.push({name:name,query:query});
            }
        }else{
            var query = {};
            query.addressCode = this.getParam('addressCode');
            vueObject.$router.push({name:name,query:query});
        }
    }
vueObject參數就是vue實例
在頁面中使用時:
            var self = this;
            var query = {};
            query.addressCode = tool.getAddressCode();
            query.groupId = id;
            tool.goToUrl(self,'productDetails',query);    

self就是vue實例

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM