微信小程序-百思不得其解

blob.png

接口


小程序文件结构

一个页面由四个文件组成,并且四个文件必须同名

  • wxml    : 页面结构,类似html。

  • wxss    : 页面样式表,类似css。

  • json    : 页面配置

  • js    :页面逻辑。

程序配置

在 app.json 文件中注册需要加载的页面、navigationBar和底部tab的各种属性、网络超时时间。

  • 注册页面

1. "pages":[
2. "pages/index/index",
3. "pages/index/detail",
4. "pages/login/login",
5. "pages/membercenter/membercenter",
6. "pages/recommend/recommend",
7. "pages/attention/attention"
8. ],
  • 放在第一的页面将会在程序加载完成时显示。

  • 配置窗口

1. "window":{
2. "backgroundTextStyle":"light",
3. "navigationBarBackgroundColor""black",
4. "navigationBarTitleText""WeChat",
5. "navigationBarTextStyle":"white",
6. "backgroundColor""#eaeaea"
7. },
  • 这里配置的是所有窗口的显示样式,如果某个页面需要更改显示样式,直接为相应的页面添加一个json文件配置即可。

其他的json文件只能配置window属性。

  • 配置tabBar

01. "tabBar": {
02. "color""black",
03. "borderStyle""white",
04. "selectedColor""rgb(176,170,168)",
05. "backgroundColor""white",
06. "list": [{
07. "pagePath""pages/index/index",
08. "text""精华",
09. "iconPath""images/tabBar/tabBar_essence_click_icon.png",
10. "selectedIconPath""images/tabBar/tabBar_essence_icon.png"
11. },
12. {
13. "pagePath""pages/recommend/recommend",
14. "text""推荐关注",
15. "iconPath""images/tabBar/tabBar_new_click_icon.png",
16. "selectedIconPath""images/tabBar/tabBar_new_icon.png"
17. }
18. }]
19. },
  • 配置底部tabBar的文字颜色、图标、页面路径等,和iOS开发中设置tabBar的思路挺像的。

  • 网络超时时间和调试开关

1. "networkTimeout": {
2. "request"10000
3. },
4. "debug":true


  • networkTimeout配置的是网络超时时间,这里的时间单位是毫秒,这里配置的也就是10秒超时。debug控制是否开启调试,如果开启了,可以看到log打印。

基本的配置搞定后,就可以开始填内容了。

顶部tab

1. <view class="top-tab">
2. <view class="top-tab-item {{currentTopItem==idx ? 'active' : ''}}" wx:for="{{topTabItems}}" wx:for-index="idx" data-idx="{{idx}}" bindtap="switchTab">
3. {{item}}
4. </view>
5. </view>
  • 使用wx:for结构循环渲染出5个Item

  • 为它们绑定一个点击方法switchTab

  • 设置一个自定义属性data-idx用来记录每个Item的索引,以便在点击的时候能够知道是哪个Item被点击。

内容列表

01. <swiper class="swiper" current="{{currentTopItem}}" bindchange="bindChange" duration="300" style="height:{{swiperHeight}}px" >
02. <!--全部-->
03. <swiper-item>
04. <scroll-view class="scrollView" scroll-y="true" bindscrolltolower="loadMoreData" >
05. <block wx:for="{{allDataList}}" wx:for-item="item">
06. <navigator url="detail?id={{item.id}}">
07. <template is="mainTabCell" data="{{item}}" />
08. </navigator>
09. </block>
10. </scroll-view>
11. </swiper-item>
12. ...
13. ...
14. </swiper>

因为需要横向分页滚动,所以我选择使用swiper作为容器,然后再让每个swiper-item包裹一层可以上下滚动的scrollView,再使用wx:for循环渲染出列表。

navigator 是导航组件。
template,即模板,作用是定义代码片段,然后在不同的地方调用。

使用网络数据渲染页面

小程序中不能操作Dom,动态渲染页面的唯一方式就是在页面中绑定数据,然后在js文件中修改数据。比如在第一个swiper-item中绑定了一个数组allDataList,当在js文件中调用setData方法修改这个数组时,列表也会被修改。

要使用网络数据当然得先进行网络访问,微信已经提供了网络请求的API。

01. wx.request({
02. url: 'http://api.budejie.com/api/api_open.php?a=list&c=data&type=1',
03. data: {},
04. method: 'GET'
05. header: "application/json"// 设置请求的 header
06. success: function(res){
07. console.log(res);
08. //通过修改绑定的数组来改变页面
09. that.setData({
10. allDataList: res.data.list
11. });
12. },
13. fail: function() {
14. // fail
15. },
16. complete: function() {
17. // complete
18. }
19. })

请求结果如下


请求结果.png


从结果中可以看出,数组中装着的是一个个的对象,我们可以直接通过字段取到他们的值。所以我们在wxml文件中绑定数据的时候就可以这样写:

01. <view class="top"
02. <!--头像-->
03. <image class="avator" src="{{item.profile_image}}" mode="aspectFit"></image>
04.  
05. <!--标题、时间-->
06. <view class="title-time">
07. <text class="title">{{item.name}}</text>
08. <text class="time">{{item.create_time}}</text>
09. </view>
10.  
11. <!--更多按钮-->
12. <image class="morebtnnormal" src="../../images/index/morebtnnormal.png" mode="center" ></image>
13. </view>

这样就直接绑定了头像 profile_image、名字 name、创建时间 create_time。其他部分也是用这种方式绑定的。

下拉刷新

实现下拉刷新有两种方式,第一种是绑定scrollView的bindscrolltoupper方法

1. <scroll-view scroll-y bindscrolltoupper="scrolltoupper">
1. scrolltoupper:function(){
2. //刷新数据
3. }

还有一种是在Page的onPullDownRefresh方法中发出请求刷新数据。

1. //监听用户下拉动作
2. onPullDownRefresh:function(){
3. //刷新数据
4. },

上拉加载更多

上拉加载更多也有两种方法,第一种是绑定scrollView的bindscrolltolower方法,但是列表数量少的时候,这个方法不靠谱,经常不会触发

1. <scroll-view scroll-y bindscrolltolower ="scrolltolower">
1. scrolltolower:function(){
2. //发出请求添加数据
3. }

第二种方法是在Page的onReachBottom方法中发出请求加载数据

1. onReachBottom:function(){
2. currentPage++;
3. //发出请求添加数据
4. }

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
微信小程序 map-master 是基于微信开发平台的一款地图应用。它提供了丰富的地图展示和定位功能,方便用户查询地理位置信息,规划路线等。 在 map-master ,用户可以通过地图展示页面查看各种地理标记,包括地点、商铺、景点等。用户可以通过缩放、拖动地图来获得更详细的信息,双击地图可以放大到更具细节的级别。地图上的标记点提供了关于该地点的详细信息,包括名称、地址、评分等。用户可以点击标记点来查看更详细的信息,也可以通过搜索功能来查找特定的地点。 在定位功能方面,map-master 使用了微信提供的位置服务接口,可以根据用户的实际位置显示当前定位,并提供导航功能。用户可以使用导航功能输入起点和终点,map-master 会根据用户选择的交通方式,提供最佳路线规划和导航指引,方便用户出行和导航。 除了基本的地图展示和定位功能外,map-master 还提供了一些实用的附加功能,比如周边搜索、实时交通状况等。用户可以通过周边搜索功能查找特定类型的地点,比如餐馆、银行、酒店等,从而更方便地满足自己的需求。实时交通状况功能可以帮助用户选择避免拥堵的路线,节省时间和精力。 总之,微信小程序 map-master 是一款功能强大且实用的地图应用程序,提供了丰富的地图展示和定位功能,为用户的出行和导航提供了很大的便利。用户可以随时随地通过微信小程序打开 map-master,获取周边信息、规划导航路线等,方便快捷。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值