小程序
1、 事件对象
a) Bind 冒泡阶段触发都事件 touchstart touchmove touchcancel touchend tap longtap
b) Catch 捕获阶段触发都事件
c) 事件中获取对应元素的参数
i. Wxml中用data给元素加参数
1. 取值方法 e.currentTarget.dataset.参数名
a) 参数名用小写 大写会转为转为小写
b) 如果有横杠连接会被转为驼峰 msg-a -> msgA
ii. 页面加载时获取连接参数的方法
1. Page({
Onload(opt){
//参数都在opt中
}
2. })
d) Bindconfirm 捕获回车键
2、 缓存
3、 列表渲染
4、 Template模板使用
a) 模板页
i. <template name=”temName”>
1. <view>这里写数据,data中的数据能能和传入进来</view>
ii. </template>
b) 引用页
i. 样式引用 @import “./tem.wxss”
ii. <import src=”./tem.wxml” />
iii. 在需要的地方写入 <template is=”temName” data=”{{这里是需要传入的数据}}” />
5、 缓存问题,缓存如果未清除会一直存在 ,上限10m
设置缓存 wx.setStorage({///默认是异步的
key:"key",
data:"value"
})
///引用页添加方法
//tem.js
const a = ()=>{console.log(0)}
export {a}
///引用页
import {a} from 'tem.js'
let index = {
a,
data:{
msg:111
}
}
Page(index)
错误处理
1、 重启开发工具
2、 跳转只支持5级 所以跳转不能全用wx.navigateTo({url:”../index/index”}) 父级到子集
适当搭配wx.redirectTo({url:“../index/index”}) 这个不会显示返回按钮
3、 设置数据时 要用 this.setData({})
4、 Scrollview 与下拉刷新存在冲突,不要同时使用,如果要使用上拉加载请使用onReachBottom
说有的请求走HTTPS 并有安全域名
Es6的使用
1、 babel支持的都支持
==============================================
小程序新增了一个接口wx.switchTab。这个接口是专门用来跳转到带有tabbar的页面
Page({
onTap: function (event) {
wx.switchTab({
url: "../posts/post"
});
}
})
注意switchTab只能跳转到带有tab的页面,不能跳转到不带tab的页面!跳转不带tab的页面还是需要使用redirect或者navigate!所以,如果如果你的post页面还没有加入tab选项卡,请依然使用redirect或者navigate!
用this.setData方法来做数据更新
Page({
data: {
},
onLoad: function () {
// this.data.postList = postsData.postList
this.setData({
postList:postsData.postList
});
},
最早的版本使用content-type:application/json
任意形式都可以用,只要不是空字符串和application/json
function http(url, callBack) {
wx.request({
url: url,
method: 'GET',
header: {
"Content-Type": "json"
},
success: function (res) {
callBack(res.data);
},
fail: function (error) {
console.log(error)
}
})
}
—2017年1月4日更新——————————————
关于input组件
在旧版本里,input的bindblur事件,不会响应模拟器中的回车事件。
但微信又偷偷的更改了这个规则,最新的122100版本中,bindblur可以响应回车事件了。
——————————17.1.4更新——————————————
122100版本为input事件新增了bindconfirm事件,不需要再使用别扭的bindchange或者是bindblur来作为键盘完成的触发事件,请使用bindconfirm。
出现这个错误的原因通常是因为对应页面的js文件里,没有调用Page方法。即使js文件里没有任何代码,也需要在js里添加一个空的 Page({ })。注意Page的P要大写。
出现这个错误的原因在于对应页面的json文件没有加入{ }。即使json文件里没有任何内容,也需要加入一个{ },作为默认代码。json文件不允许出现注释代码,如果有注释的代码,同样会报这个错误。
(问题的提出和整理来自知乎ID:顽主)出现类似的这种错误,通常是由于图片的路径不对而引起的。外网的图片,我们这里不再说了,因为没有相对和绝对的路径概念,如果报错了就是你外网的图片url错了。我们说说本地的图片路径问题。请注意,如果图片路径被写在一个js文件A里,而B引用了这个js文件,那么图片的路径必须是相对于B的相对路径。所以,最好在公共的js文件里使用绝对路径。
还有一点,提醒大家,小程序对资源文件,比如图片是有缓存的,这个大家要注意。
在开发工具中->项目->预览时,有时候会报以上错误。错误的原因是因为,app.json的tabBar选项中,list下的iconPath出现了绝对路径 “ / ”,比如
"list": [{
"pagePath": "pages/movies/movies",
"iconPath": "/images/tab/dianying.png",
"selectedIconPath": "images/tab/dianying_hl.png",
"text": "电影"
}, {
"pagePath": "pages/setting/setting",
"iconPath": "/images/tab/set.png",
"selectedIconPath": "images/tab/set_hl.png",
"text": "设置"
}],
iconPath 以 “/ ”开头,就会出现以上错误。请使用相对路径,去掉 / 。
首先,这只是一个警告信息,不是错误信息,不理他不会对程序运行有任何的影响。其次这是在112300版本中新增的内容。课程里没有去处理的原因在于,对于静态的只有5条数据的文章列表加入wx:key并没有任何的意义。wx:key用来对列表渲染的数据指定一个”主键”,以加快列表渲染的速度。以下是官方文档原话:如不提供 wx:key,会报一个 warning, 如果明确知道该列表是静态,或者不必关注其顺序,可以选择忽略。
如果你一定想去掉这个警告,可以在wx:for的组件属性里增加一个 wx:key=”unique”,unique请替换成数据绑定列表里的任意一个字段的字段名,比如文章列表数据中的字段“postId”,即wx:key=”postId”。不建议使用wx:key=”*this”。.
这多半是在 app.js里添加了Page()。app.js是应用程序级别的不能用Page(),Page*()只能用于页面的js文件中。app.js请使用App()。
background-image如果url指向的是一个网络图片,则真机可以显示。但如果url指向的是本地图片,则在模拟器里显示正常,iOS上无法显示图片。建议使用image.
以上问题来自知乎专栏https://zhuanlan.zhihu.com/oldtimes?topic=%E5%BE%AE%E4%BF%A1%E5%B0%8F%E7%A8%8B%E5%BA%8F
更多学习资料
https://github.com/7insummer/orange-can
https://github.com/7insummer/orange-can-server
button设置的背景色只支持标签名 不要试图给button设置类名来改变背景色
wx.setStorage({key:’key’,data:’value’}) 是异步的事件,传入的需要时个object
而wx.setStorageSync(‘key’,value) 是同步的事件,不能传入object
小程序中的数据展示如果有换行,需要满足两个条件
1.数据 换行符 \n
2. 包含数据的盒子必须是
textarea是个让人头疼的东西,他是h5 原生的,没有东西可以定位到他的上面,我们想在它上面显示东西的时候只能先把他隐藏,
小程序的textarea和h5 的优点不一样,它的值显示在value属性中,而不是标签内
去掉textarea上的完成按钮栏,每次输入换行时会遮挡住光标所在的输入行。使用show-confirm-bar=’false’竟然无效
解决办法
show-confirm-bar=''