1.map组件遇到的问题以及解决办法
当时的需求是要在地图上画线,然后能够轨迹回放,看了一下小程序开发的文档,就是加一个polyline属性,觉得挺简单的啊,一顿操作之后发现marker点都赋值到points这个数组去了,但是就是不显示轨迹线。百思不得其解,觉得可能是地图的原因,又把地图从百度地图换成腾讯地图,结果还是不行。尝试把赋值写在回调里面,然鹅并没有什么用。这他娘的我无解了啊,把代码贴出去让人家做过这块东西的人看,人家说你写的没毛病啊。然后我就浏览微信开发的社区,发现有一条,如果使用setData给数组赋值的时候,先把data里面的数组赋值给临时数组,然后把数据写入到临时数组中,然后再用setData把这个临时数组赋值给data里面的数组,我当时躺床上准备睡觉了,想了一下polyline也是一个数组呀,就试了一下,果然成功了,我不知道为什么微信小程序的数组赋值要这样?难道是因为它异步的原因么?
2.wxss
该怎么说呢,这个东西有坑也有好的一面,坑就是颜色不能缩写成三位的,而且感觉小程序里面的组件自带什么相对定位什么的。然后就是不能在这里写图片的路径,会报错,只能在data中或者内联样式中写
3.自定义组件与父组件两者相互传值
这一方面与vue类似,如果你熟悉vue的父子传值这一块就很好理解了
<1>父传给子组件
结合我项目里面的情况,在项目里面只会显示一个图标,点击图标会在左侧弹出相关的导航,这个时候我就想不能把他们全部放在一个wxml中,这个时候就要把这些放在一个组件中才合适。 首先在父组件的json中开启引用组件
"usingComponents": {
"userInfo": "../components/yyyyy/XXXXXComponents",
"terminal":"../components/yyyy/XXXXXXComponents",
"dropDown":"../components/yyyyy/XXComponent"
}
在父组件中使用子组件
<userInfo class="info" id="userInfo" maskShow="{{maskShow}}" bind:getMaskControl="maskControl">
<view slot="terminalName">{{terminalName}}</view>
<view slot="terminalStatus">{{terminalStatus}}</view>
</userInfo>
这里面的slot就可以向子组件传值,是不是类似vue? 然后子组件接收值
<view class="name"><slot name="terminalName"></slot></view>
<view class="status"><slot name="terminalStatus"></slot></view>
<2>子组件如何向父组件传值
<userInfo class="info" id="userInfo" maskShow="{{maskShow}}" bind:getMaskControl="maskControl">
<view slot="terminalName">{{terminalName}}</view>
<view slot="terminalStatus">{{terminalStatus}}</view>
</userInfo>
还是这段代码,这里面包含了自定义属性的绑定,自定义事件的绑定 在父组件中定义函数
maskControl(e){
this.setData({
maskShow: e.detail
})
},
在子组件中定以能够触发父组件函数的方法
changeInfo(e) {
let that = this;
that.triggerEvent('getMaskControl', true)
},
在vue中的话应该是$emit进行触发的吧。
<3> 父组件如何调用子组件的方法
先要获取子组件
this.userInfo = this.selectComponent("#userInfo")
下面是调用
that.userInfo.getUserInfo((res)=>{
console.log("index调用结果");
console.log(res)
that.setData({
terminalName:res.name,
terminalStatus:res.status
})
});
总结
还有一些比较简单的,比如说导航如何加上左上角的返回箭头,input如何定义1px的边框,如何缩进,switch组件如何定义大小,这些就不说了,还有如何构造一个表格等。上面的觉得比较有意思的。不管别人看到还是看不到,自己记录一下。