上线,有appid就能上线,注意,个人小程序不能有涉及到商业宣传的内容,否则审核不通过。
小程序的宿主是微信,没有window对象,dom、bom在小程序中都不存在。
在小程序中都是用wx.**(方法、对象、接口)。比如,在调试时,alert在小程序中没用。可以用console替代。
关于app.js
app.js是全局js脚本,在它里面定义的事件、方法、属性等,在全局中都可以使用。
在各个子页面的js中通过getApp();将app.js加载到本页面(类似于<script src=""app.js></script>),通过console.dir可以在相应子页面的控制台中展开。app.js中定义的事件、方法等。通过 点 符号可以调用这些事件、方法。
注意公共的事件与方法才定义到add.js中。
var abc=getApp();//在子页面的js中引用app.js
console.dir(abc);//在子页面的控制台中展开add.js的内容,,查看有哪些事件、方法
abc.calc(5,7);//调用app.js中定义的两数相加的方法
关于App()
App() 定义在微信环境中,{ }中放置4个事件,以及n个自定义的方法和属性
onLaunch 当小程序由关闭到启动时,加载初始数据,比如游戏中的历史最高分
onShow 从后台到前台时触发
onHide 从前台到后台时触发
onError 当出错时触发
xxx.js
页面级别的脚本,无需在wxml中调用就能直接使用,因为组成每个小程序页面的几个文件,在创建之初的时候,就已经关联在一起了。
Page() :定义在微信环境中,{ }中放置8个事件,以及n个自定义的方法和属性。
data:{}:当页面中的一些内容,会不断变化的情况,不要直接在页面上写死,要通过data:{}定义变量,传递到页面。
触发事件
onclick=“abc( )" 等于 bindtab="abc",abc是自定义事件
this
无论是App({})还是Page({})中,this都是指{},通过this,可以调用{}中的任意方法、方法中德变量等
微信小程序如果用了接口API,部分禁止写this,任何事件调用都先写一句 var that=this; 这时that指代包含这句代码的对象,在该对象中的方法中的this,指代该方法。这样就避免了混淆this。
更改innerHTML内容
只要需要来回变化的东西,都应该用ng变量的方式解决
由于小程序中没有dom、document,无法得到页面标记,就无法改变innerHTML
解决:
功能改成一个ng变量,在对应js文件里面的data:{}里面初始化变量,然后在自定义事件里面用 this.setData({变量:”df“})的方式,改变变量的值,对应的页面内容也随之改变。
改变数组中的值
//修改data中的数组的值时 'this.data.markers[0].latitude' : x ; 这种写法是错误的。this.data 是多余的,因为setdata()默认就已经获得data了。
data: {
longitude: 0,
latitude: 0,
markers: [{
id: 0,
latitude: 2,
longitude:3,
width: 50,
height: 50
}]
}
//x、y为假设的值
that.setData({
latitude: x ,
longitude: y,
'markers[0].latitude':x,
'markers[0].longitude':y
});
动态的改页面样式
改style样式
像改innerHTML内容一样,先把标记中的style样式值定义在对应js文件里面的data:{}里面初始化变量,然后在自定义事件里面用 this.setData({变量:”df“})的方式,改变变量的值,对应的页面样式也随之改变。。
改选择器名
先将对应的样式定义在wxss里面,然后在自定义事件里面用 this.setData({变量:”df“})的方式改变相应标记的选择器名。
延伸技巧:一键换肤(适用于普通的前端开发与小程序)
事先写好几套样式,这几套样式除最外层元素的选择器名不一样之外,各个子元素的选择器名都一样。点击相应按钮触发事件,改变最外层元素的选择器名,样式被改变。然后将改变后的选择器名存储到本地存储,下次再打开时直接取出被选中的选择器名,就能展现用户上次选中的样式。
rpx
100%===750rpx,不管你的手机是多大屏幕,它都会默认你的屏幕是750rpx,然后进行适配。
APP.json文件
//如果各个子页面中定义了各自的json样式,就会覆盖app.js中定义的样式。
"window":{
"backgroundTextStyle":"light",
"navigationBarBackgroundColor": "#b53e1d",
"navigationBarTitleText": "长膘膘",
"navigationBarTextStyle":"#fff"
}
//子页面中可以不写json,如果要写,至少要有一个{}
{
"backgroundTextStyle":"light",
"navigationBarBackgroundColor": "#b53e1d",
"navigationBarTitleText": "长膘膘",
"navigationBarTextStyle":"#fff"
}
//这等同于:app.json中的window,(注意没有window)只不过这是页面级别的配置,在子页面中只能设置这些,别的不能设置,比如不能设置tab
地图
返回的位置信息有两种类型:默认为 wgs84 返回 gps 坐标,gcj02 返回可用于wx.openLocation的坐标,后者更精确.
map 组件使用的经纬度是火星坐标系,调用 wx.getLocation 接口需要指定 type 为 gcj02。
事件
bind/catch
tap 点击
longtap 长按
touchstart 触摸开始
touchmove 触摸移动
touchend 触摸结束
touchcancel 触摸取消
touchstart touchend tap 轻触
touchstart touchmove touchend 滑动
数据请求
小程序在未上线之前,可以请求本地数据,上线之后要有https协议的域名。
请求路径不合法时,在项目设置中设置不校验安全域名,否则无法请求。
image
image 默认有一个宽度和高度(320*240),不设置宽高的情况下会扰乱布局。
picker 标记里面不要用input填充数据,那样点击时有时会调出键盘,而不是选择面板,用view标记填充数据就好。
movable-view 后渲染的view的z-index,总比先渲染的view大。
网友评论