项目场景:
为了方便测试和功能的需求,他人可通过网址携带参数,传入到自己的输入框内
解决方案:
在mounteds()里写获取url里面内容的代码,如果没有用vue写的话需要把这个getObject方法写上,用vue了就不用写了,我也不晓得反正是这样用的,如果有知道的还请提示一下
get哪里是重点需要将url获取到的数据利用正则表达式进行切割出对应参数,然后通过mounted()里的以下代码来调用并赋值
mounted() {
//调用网址传参的get方法
window.οnlοad=function (){
getObject("key").value = get("k");
//key作为input里的name名,接收到的值就是浏览器里的k参数
//k是浏览器里的参数名
}
this.myfunadds() //调用判断网页传过来的值
},
至于 this.myfunadds() //调用判断网页传过来的值
这个方法调用是哪里代码如下:
myfunadds(){
if(this.get("chfpdrName")!=''){
this.queryInfos.chfpdrName=decodeURI(this.get("chfpdrName"))//主诊医生
}
if(this.get("chfpdrCode")!=''){
this.queryInfos.chfpdrCode=this.get("chfpdrCode")//医生代码
}
if(this.get("deptCodg")!=''){
this.queryInfos.deptCodg=this.get("deptCodg")//科室编码
}
if(this.get("deptName")!=''){
this.queryInfos.deptName=decodeURI(this.get("deptName"))//科室名称
}
if(this.get("epcId")!=''){
this.queryInfos.epcId=this.get("epcId")//处方ID号
}
if(this.get("diagDscr")!=''){
this.queryInfos.diagDscr=decodeURI(this.get("diagDscr"))//诊断描述
}
if(this.get("insutype")!=''){
this.queryInfos.insutype=decodeURI(this.get("insutype"))//险种类型
}
if(this.get("tcmdrugUsedWay")!=''){
this.queryInfos.tcmdrugUsedWay=decodeURI(this.get("tcmdrugUsedWay"))//服药方式
}
if(this.get("reviewName")!=''){
this.queryInfos.reviewName=decodeURI(this.get("reviewName"))//审核人员
}
if(this.get("adjustName")!=''){
this.queryInfos.adjustName=decodeURI(this.get("adjustName"))//调剂人员
}
if(this.get("mdtrtId")!=''){
this.queryInfos.mdtrtId=this.get("mdtrtId")//购药编码
}
if(this.get("setlId")!=''){
this.queryInfos.setlId=this.get("setlId")//结算id
}
if(this.get("mainCondDscr")!=''){
this.queryInfos.mainCondDscr=decodeURI(this.get("mainCondDscr"))//病情描述
}
if(this.get("medrcdno")!=''){
this.queryInfos.medrcdno=this.get("medrcdno")//病历号码
}
if(this.get("tcmdrugCnt")!=''){
this.queryInfos.tcmdrugCnt=this.get("tcmdrugCnt")//中药付数
}
},
这里将参数进行这么多非空判断是因为,我的页面获取到网页传过来的值之后再去执行其它事件页面会自动刷新,数据就会消失,所以我做了非空判断使得如果发现条件不满足直接赋值就好了,然后在用到他的地方调用这个方法就好了
注: 如果参数里有汉字切记要转换格式传参方法如下:
this.queryInfos.chfpdrName=decodeURI(this.get("chfpdrName"))
decodeURI(this.get("chfpdrName"))加上它就可以了
为什么要把调用的方法写到mounted里,一些函数用法我总结到这里了
created:html加载完成之前,执行。执行顺序:父组件-子组件
mounted:html加载完成后执行。执行顺序:子组件-父组件
methods:事件方法执行
watch:watch是去监听一个值的变化,然后执行相对应的函数。
computed:computed是计算属性,也就是依赖其它的属性计算所得出最后的值
created():组件实例创建完成,dom还未生成,仅仅触发一次;
mounted是挂载vue实例后的钩子函数,仅仅执行一次;
activated():在使用时,会用到activated(),keep-live主要目的是可以使用缓存,避免组件重新渲染;
activated()只要进入页面就会触发
第二种方法比较简单:
// 获取URL参数
function getUrlParams() {
var url = document.URL.split('?')[1];
if (!url) {
return {};
}
var params = url.split('&');
var obj = {};
params.forEach(function (param) {
var keyValue = param.split('=');
obj[keyValue[0]] = keyValue[1];
});
return obj;
}
// 根据URL参数执行相应操作
var params = getUrlParams();
if (params.comID) {
console.log('主诊医生:' + decodeURIComponent(params.comID));
}
if (params.userID) {
console.log('医生代码:' + decodeURIComponent(params.userID));
}
直接这样写就可以了