當前是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實例