小程序让每个页面都有tabbar 选项卡导航

1.创建模板文件

代码片段
1 行
\pages\template\tabBar.wxml
article image

tabBar.wxml文件代码

代码片段
11 行
<template name="tabBar">  
  <view class="flex-h flex-hsb tab-bar" style="color: {{tabBar.color}}; background: {{tarBar.backgroundColor}}; {{tabBar.position=='top'? 'top: 0' : 'bottom: 0'}}; {{tabBar.borderStyle? (tabBar.position=='top'? 'border-bottom: solid 1px '+tabBar.borderStyle + ';' : 'border-top: solid 1px '+tabBar.borderStyle + ';') : ''}}">  
  <block wx:for="{{tabBar.list}}" wx:key="pagePath">  
    <navigator url="{{item.pagePath}}" open-type="redirect" class="menu-item" style="{{item.active? 'color: '+(item.selectedColor? item.selectedColor : tabBar.selectedColor) : ''}}">  
      <image src="{{item.selectedIconPath}}" wx:if="{{item.active}}"></image>  
      <image src="{{item.iconPath}}" wx:if="{{!item.active}}"></image>  
      <text>{{item.text}}</text>  
    </navigator>  
    </block>  
  </view>  
</template>

2.引入模板文件

在需要使用模板的页面 .wxss文件中import进来;
或者直接在app.wxss中引入,这样只需要一次引入,其他文件就不用再引入

article image

以about.wxml页面为例

代码片段
4 行
<!--pages/about/about.wxml-->

<import src="../template/tabBar.wxml" />
<template is="tabBar" data="{{tabBar: tabBar}}" />

about.js

代码片段
1 行
App.editTabBar(this);//添加tabBar数据
article image

3.修改app.js文件

article image

注意前后逗号

4.配置页面导航内容

article image

注意在头部写入

GDScript3
1 行
var App = getApp();

配置tabBar

5.tabBar全局样式

article image

app.wxss 添加到文件末尾即可

示例源码下载

article image

6.全局配置tabBar

如果多个页面共用tabBar配置文件,则按以下方式修改编写

a.修改app.js

tabBar 配置写在globalData里面

b.以about页面为例

代码片段
4 行
1.创建模板文件
2.引入模板文件
5.tabBar全局样式
这三步骤不变,跟上面一样

about.js文件修改为 删除data里面的配置数据

article image

新增修复是否当前页面自定义tabBar配置文件还是全局文件

c.是否页面自定义配置

微信小程序-template模板使用

7.模板

一、定义模板

1、新建一个template文件夹用来管理项目中所有的模板;
2、新建一个courseList.wxml文件来定义模板;
3、使用name属性,作为模板的名字。然后在<template/>内定义代码片段。

注意:
a.可以看到一个.wxml文件中可以定义多个模板,只需要通过name来区分;
b.模板中的数据都是展开之后的属性。

二、使用模板

1、使用 is 属性,声明需要的使用的模板

代码片段
1 行
<import src="../../templates/courseList.wxml"/>

2、将模板所需要的 data 传入,一般我们都会使用列表渲染。

代码片段
3 行
<block wx:for="{{courseList}}">
    <template is="{{index%2 === 0 ? 'courseLeft' : 'courseRight'}}" data="{{...item}}"></template>
</block>

注意:
a.可以通过表达式来确定使用哪个模板

代码片段
1 行
is="{{index%2 === 0 ? 'courseLeft' : 'courseRight'}}" 

或者通过

代码片段
1 行
wx:if

来确定。index是数组当前项的下标。

代码片段
2 行
<template wx:if="{{index%2 === 0}}" is="courseLeft" data="{{...item}}"></template>
<template wx:else is="courseRight" data="{{...item}}"></template>

b. data 是要模板渲染的数据,

代码片段
1 行
data="{{...item}}"

写法是ES6的写法,item是wx:for当前项,... 是展开运算符,在模板中不需要再

代码片段
1 行
{{item.courseName}}

而是直接{{courseName}} 。

三、模板样式

1、在新建模板的时候同时新建一个courseList.wxss 的文件,与CSS同样的写法控制样式。
2、在需要使用模板的页面 .wxss文件中import进来;
或者直接在app.wxss中引入,这样只需要一次引入,其他文件就不用引入了。

代码片段
1 行
@import "../template/courseList.wxss";

参考:
http://blog.csdn.net/eadio/article/details/54405594
http://blog.csdn.net/u013778905/article/details/59646241 tabbar.rar

GDScript3
6 行
微信小程序获取当前页面的路径的方式
使用getCurrentPages可以获取当前加载中所有的页面对象的一个数组,数组最后一个就是当前页面。
var pages = getCurrentPages() //获取加载的页面
var currentPage = pages[pages.length-1] //获取当前页面的对象
var url = currentPage.route //当前页面url
var options = currentPage.options //如果要获取url中所带的参数可以查看options
代码片段
2 行
微信小程序遇到修改数据后页面不渲染的问题解决 setData 修改页面
要调用一下setData()方法