1.父组件向子组件传值
父组件中:
在子标签上用:hospitalShow="hospitalShow"
绑定传递数据
子组件中:在props中接收过来的值就可以使用了
`props:{
hospitalShow:{
type:Boolean
}
},`
2.子向父传值
(1)父组件中:引用插入标签之后,在子标签上使用@receiveData="receiveData"
去监听receiveData事件;
(2)子组件中:需要传递的地方使用$emit触发receiveData事件,传入需要传递的参数;
(3)父组件中:在methods中定义receiveData方法去接收处理传过来的值:
receiveHospital :function(data,show) {
this.selectedHospital = data;
this.hospitalShow = show;
},
3.父组件获取子组件中的某个元素
子组件中用:ref标记要获取的元素:
父组件在使用子组件标签时 也用ref标记子组件
父组件中用this.$refs.years(子组件标记名称).$refs.item5(元素标记名称)
4.向后台获取的对象中增加属性,用vue.set方法,首先需要引入vue,
import Vue from 'vue'
例如:
this.disease.forEach(function (item) {
Vue.set(item, 'isSelected', false);
})
当操作数组需要更新试图的时候,也使用set方法来实现,splice等方法不会同步更新视图,例如:
for(let i = 0,len=this.showHistory.length;i<len;i++){
this.$set(this.showHistory,i,'');
}
5.v-model为对象数组,在input中想展示所有对象的name,需要用到computed属性:
computed:{
subMajor(){
let sub='';
this.selectedSubMajor.forEach(function(v,i){
sub+=v['majorName']+'、';
})
return sub;
}
},
展示时:
<div class="input" v-if="careerType===1">
<text class="star">*</text>
<text class="label">亚 专 业</text>
<input type="text" class="input-box" v-model='this.subMajor'placeholder=" 请选择你的亚专业" >
<text class="iconfont iconText"></text>
</div>
6.安卓调试问题
想在手机端看看样式的展示,控制台输入weexpack run android,报错:adb failed to start daemon;
解决办法:输入adb nodaemon server,他提示5027端口被占用,再输入netstat -ano | findstr "5037",查看到它的pid,然后在任务管理器中手动关闭它,就可以解决报错问题。
7.箭头函数问题,获取数据后,需要根据id回填上对应的姓名,想遍历departmentList,写成 this.departmentList.forEach(function(item){})
语句不执行也不报错,需要写成:
this.$ajax(this.getUrlConfig().url_new+'api/doctor/basicInfo/v1/getDoctorInfo',
`id=34`,
).then((res)=>{
this.doctorData = res.data.data;
}).then(()=>{
this.departmentList.forEach((item)=>{
if( item.id == this.doctorData.departmentId) {
this.selectedDepartment = item;
}
})
})
.catch(()=>{
// 回调响应错误
});
8.weex andorid惊天大秘密!!!!父组件接收子组件传回的值时,子标签中绑定监听事件@main-event="receiveSelectedMainMajor"
在电脑上功能没有问题,但在手机上不起作用,因为监听事件的名字中不能有-
.搞了好半天 原来是这种问题 = =
9.如果页面中不写
beforeRouteLeave(to, from, next) {
to.meta.keepAlive = true;
next();
},
会导致在安卓手机上触发不了返回按钮。
10.执行weexpack run android时,报错 stderr maxBuffer exceeded,需要更改C:Usersadmin.xtoolkitnode_modulesweexpacksrcutils下的index.js解决办法
11.`data(){
return{
imgUrl:this.getUrlConfig().url_qn
}
}`
data中不能用变量给变量赋值 手机上会报错
12.在安卓手机上,别操作dom,别使用:style,前者在手机上会报错,后者不起作用。绑定样式时,不能用:class="{isShow : 'show'}"的方式,手机也不起作用,必须用:class="[isShow ? 'show' : 'no']"的形式。
13.flex布局问题:用了weex感觉很多以前用的布局方式都不起效果了,那weex的flex布局肯定能帮到你:weex的flex
14.在头部组件中需要传入字体图标,但是变量形式的传""后,浏览器并不能解析成图标展示出来,这时候只需要把''换成ue685就可以照常传递了。
15.没有搜索出内容的时候,需要点击下面重新搜索,清空输入框,并且获取其焦点,weex官网上给出的例子是直接<text>上使用$ref.input.foucs(),实际使用时没有效果,在保证$ref.searchInput能获取到的情况下,需要加一个延时才有用。
emptySearchText : function () {
this.searchText = '';
let stv = setTimeout(()=>{
this.$refs.searchInput.focus();
},0);
},
16.数组去重有许多方法,到目前为止,我看到的最简洁的代码是ES6中的数组去重
Array.from(new Set(arr))
17.setTimeout箭头函数问题:
let stv = setTimeout((function() {
this.isShowNotice();
}),300)
这样写在mount中,this能到,如果写成箭头函数形式,
let stv = setTimeout(=>() {
this.isShowNotice();
}.bind(this),300)
this指向为window
18.搜索第一次的时候结果能正确展示,但是在android APP上点击输入框中的叉,再搜索时,页面因为从七牛云上取下的图片加载问题而卡死。是因为在点击叉的时候,没有把存储结果的数组清空,而导致图片加载后第二次路径才发生变化。
19.weex中的<text>里面只能写文字,且最好不要加回车或者空格,会导致位置问题,或者直接不显示。
未完待续。。。。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。