本文作者:好JSER,来自原文地址
基础的配置及视图层、逻辑层自己看文档 [微信小程序文档][1] 这里只说一下自己的经验总结 提醒
eg:页面A->页面B->页面C->页面D->页面E->(页面F是跳转不出来的) 注:不经过redirect,redirect后的页面算是第一层,但是没有-返回-按钮
视图元素单位设计时最好让ui做成750px,开发中,ui是多少px,你写成多少rpx就OK了,原理,自己查文档去 页面传参
<navigator url="/pages/detail/detail?id=2"></navigator>
Page({
onLoad (opositions) {
// 看看是不是你想要的
console.log(opositions.id)
}
})
视图响应
每个页面都有一个Page实例,响应就是该实例的setData方法触发的,
*直接给绑定数据赋值,数据会改变,但是视图不会渲染
js文件
let config = {
data: {}
}
Page(config)
事件绑定
wxml文件
<view bindtap="tapHandler"></view>
js文件
let config = {
data: {},
tapHandler () {
console.log('i am a handler')
}
}
bindtap的绑定最终会解析成方法名,所以bindtap=“tapHandler(参数)”,是会报错的,—-没有找到‘tapHandler(参数)’这个方法, 公用组件组件分三个文件,wxml、js、css wxml文件定义template模版,页面里以import方式引入,这样能控制传入模版的数据
js文件exports一个对象,页面里以require方式引入,并且合并到Page实例化的配置对象中
let tempateConfig = require('url')
let config = {
data: {}
}
config = Object.assign(config, templateConfig)
Page(config)
css文件以@import方式导入 开发技巧
1.锚点
wxml文件
<view>
<button data-hash="hash1" bindtap="goHash">点击定向hash1</button>
<button data-hash="hash2" bindtap="goHash">点击定向hash2</button>
</view>
<scroll-view scroll-y="true" scroll-into-view="{{toView}}">
<view id="hash1"></view>
<view id="hash2"></view>
</scroll-view>
js文件
Page({
data: {
toView: 'hash1'
},
goHash (e) {
let hash = e.currentTarget.dataset.hash
this.setData({
toView: hash
})
}
})
但是这是单向的,只能点击按钮,跳转锚点,屏幕滑动到相应锚点,toView属性不会相应改变,当然,如果你能通过bindscroll事件动态取到的相关数据,并且最终能把toView计算出来,就另说了,但不要想操作dom获取元素宽高什么的,对不起,微信的dom卖完了,没有
2.滚动加载
wxml文件
<scroll-view scroll-y="true" scroll-into-view="{{toView}}" bindscrolltolower=“loadMovies”>
<view wx:for="{{movies}}" wx:key="index">
{{item.name}}
</view>
</scroll-view>
js文件
Page({
data: {
movies: []
},
getMovies () {
let _self = this
wx.request({
url: 'https://......',
data: {},
success: function(res) {
// res.data才是你后端返回的真实数据
_self.setData({
movies: res.data
})
}
})
},
loadMovies () {
// 得到要更新的数据,setData重置movies
}
})
可以做懒加载,也可以做预加载,具体逻辑自己想吧 暂时就这些啦。。。最后抱怨一句,咋就不支持外链呢,引共用组件咋那么麻烦呢 |