上一文章里面,咱们实现了第一个小程序页面,而且了解到了一些小程序的知识,接下来继续开始咱们的学习。json
在第一个小程序页面,预留了一个按钮,这是为了跳转到其余的页面,在微信小程序里面跳转的方法主要有下面三种:小程序
wx.navigateTo()
wx.redirectTo()
wx.switchTab()
wx.switchTab({ url: '/index' })
路径可得注意写对,区分绝对路径和相对路径:segmentfault
绝对路径:通常在前面加上/
,表示从根目录开始往下寻找
相对路径:相对于当前页面来讲,每次使用../
就是往上跳出一层
第一和第二种方法主要的区别是:前者保留当前页面(父页面,执行onHide()方法
),跳转到其余页面(子页面),最后能够返回到当前页面(父页面),两个页面之间是父子关系;后者关闭当前页面(执行onUnload()方法
),跳转到其余页面,没法返回,两个页面是平行关系。微信小程序
第三种比较特别,这种跳转是专门跳转到带有 tabBar
的页面,并关闭其余全部非 tabBar
页面,使用上面两种跳转方式是无效的。从 tabBar
的页面跳转到非 tabBar
的页面,可使用上面的两种方式。数组
swiper
swiper
一般是配合着swiper-item
来使用的,前者是整个轮播图的容器,后者是单一轮播子项目容器,仅在前者内部使用,宽高默认为swiper
的宽高,只是一个容器,没有其余做用,可是缺乏又不行。因此对于swiper-item
都应该做用在swiper
父节点上面。服务器
<swiper catchtap='onSwiperTab' indicator-dots='true' autoplay='true' interval='5000'> <swiper-item> <image src='/images/post/bl.png' ></image> </swiper-item> <swiper-item> <image src='/images/post/xiaolong.jpg'></image> </swiper-item> <swiper-item> <image src='/images/post/vr.png' ></image> </swiper-item> </swiper>
咱们不能想固然的认为在swiper-item
里面只能放图片,还能够放入其余的一些东西,好比文本;实现一些其余的业务,好比弹幕轮播。微信
经过设置vertical='true'
设置轮播滚动的方向,indicator-dots='true'
指示器的显示app
在轮播图里面,实际控制图片的大小是依靠image
标签,默认有宽高。dom
事件通常分两种:ide
冒泡事件:点击了子节点,父节点上面的事件也会执行;可是点击父节点上面的事件,子节点上面的事件不会执行bind
开头:表示冒泡,后面接事件名非冒泡事件:当一个组件上的事件被触发后,该事件不会向父节点传递。通常在子节点上面添加。
catch
开头:表示非冒泡,后面接事件名
<view bindtap='onbind'> 我是事件2 <view bindtap='onBind'>我是事件1</view> </view> onBind: function (event) { console.log("事件1执行了") }, onbind: function (event) { console.log("事件2执行了") }
在我点击了事件1没有点击事件2的时候,事件2也会被触发,这就是冒泡;可是把方法改成catchtap
,点击事件1的时候,只是事件1的函数触发,事件2函数不会被执行。还有一种catch:tap
的声明事件的方法。
tabBar
页面配置前面说到在app.json
是配置一些小程序项目的全局配置,能够在某个页面下面的json
文件来单独配置该页面所须要的配置。
tabBar
是在全局app.json
里面配置,跟项目页面都须要在全局app.json
里面注册同样,tabBar
也是里面的一个属性,其中的list数组
最上至少配置2个,最多5个,按照其在数组里面的顺序排布。
"tabBar": { "position":"top", // 按钮的位置,默认为bottom,设置为top的时候,icon设置无效 "borderStyle": "white", // tabBar的颜色 "list": [ { "pagePath": "pages/posts/post", // 页面路径,必须先在pages属性中定义 "text": "阅读", "iconPath": "images/tab/yuedu.png", // 未选中的图片 "selectedIconPath": "images/tab/yuedu_hl.png" // 选中的图片 }, { "pagePath": "pages/movies/movies", "text": "电影", "iconPath": "images/tab/dianying.png", "selectedIconPath": "images/tab/dianying_hl.png" } ] }
在全局的app.json
里面配置好了,那么项目启动的时候就默认在最底部出现栏位的切换;固然也能够改变其位置,使其出如今顶部,出如今顶部的时候,按钮的图片失效:
小程序里面没有dom节点
的概念,不可以像使用jQuery
同样,经过操做DOM节点来给页面添加数据。相反的小程序经过数据绑定,来达到数据优先。这样的好处在于不用操做DOM,减小页面加载的时间。
<view> <view src='{{author_img}}' catch:tap='onBind'>{{date}}</view> </view> Page({ // 页面的初始数据 data: { date:"我是事件1" } }
上面这种就是数据绑定的方式,在对应页面JS文件中的page()
的data
属性里面,填写页面须要的数据,以键值对的形式,而后在页面对应的位置使用{{key}}
,绑定数据。固然能够在一个位置绑定多个数据,只须要这样{{key1}}{{key2}}
。在标签的属性上面绑定数据的时候,须要使用"{{key}}"
<view> <view catch:tap='onBind'>{{date}}{{title}}</view> </view> Page({ data: { date:'stp 17', title:' hi icessun' }, onLoad: function (options) { var dates={ date:'stp 18', title:'icessun' } this.setData(dates) } }
固然不可能直接在data
里面写数据,这些数据都是从服务器上面获取的,在页面初始化的时候,就会向服务器发送请求,对数据进行一番处理后,经过this.setData()
的方法把数据绑定在页面上面,this.setData()
方法里面接收到的参数,至关于把这写参数,先放在data属性里面
,而后在经过data属性
中的键值,绑定在页面上。固然会把相同的属性名(key值)的覆盖掉