博主最近实习的时候发现后台传过来的对象是各式各样的,要求前端微信小程序遍历,为了提高复用性,使用了模板(template)。

以下是公司OA系统的部分源码

<template name="item">
  <!-- 招待 -->
  <block wx:if="{{item.title == '业务招待'}}">
    <template is="entertain" data="{{item,icon}}"></template>
  </block>
  <!-- 差旅 -->
  <block wx:elif="{{item.title == '差旅费'}}">
    <template is="travel" data="{{item,icon}}"></template>
  </block>
  <!-- 私车 -->
  <block wx:elif="{{item.title == '私车公用'}}">
    <template is="private" data="{{item,icon}}"></template>
  </block>
   <!-- 私车 -->
  <block wx:elif="{{item.title == '财务审批私车'}}">
    <template is="finance_private" data="{{item,icon,index}}"></template>
  </block>
  <!-- 公车 -->
  <block wx:elif="{{item.title == '公车申请'}}">
    <template is="public" data="{{item,icon}}"></template>
  </block>
  <!-- 用印 -->
  <block wx:elif="{{item.title == '用印申请'}}">
    <template is="seal" data="{{item,icon}}"></template>
  </block>
  <!-- 年假 -->
  <block wx:elif="{{item.title == '年假申请'}}">
    <template is="vacation" data="{{item,icon}}"></template>
  </block>
</template>
<!-- 用印 -->
<template name="seal">
  <view class="pendingItem clearfix" hover-class="pressed_view">
    <image class="user_icon" src="{{icon}}"></image>
    <view class="user_info">
      <view class="user_name">{{item.applyusername}}</view>
      <view class="user_applytype">用印申请</view>
    </view>
    <view class="check_info">
      <view class="detail_info">
        <view>申请部门:</view>
        <view>{{item.department}}</view>
      </view>
      <view class="detail_info">
        <view>用印类型:</view>
        <view>{{item.gzkind}}</view>
      </view>
      <view class="detail_info">
        <view>发往单位:</view>
        <view>{{item.sendto}}</view>
      </view>
      <view class="detail_info">
        <view class="status">{{item.status}}</view>
      </view>
    </view>
    <view class="arrow_right"></view>
  </view>
</template>
<!-- 年假 -->
<template name="vacation">
  <view class="pendingItem clearfix" hover-class="pressed_view">
    <image class="user_icon" src="{{icon}}"></image>
    <view class="user_info">
      <view class="user_name">{{item.applyMan}}</view>
      <view class="user_applytype">年假申请</view>
    </view>
    <view class="check_info">
      <view class="detail_info">
        <view>申请时间:</view>
        <view>{{item.beginTime}}</view>
      </view>
      <view class="detail_info">
        <view>请假类型:</view>
        <view>年假</view>
      </view>
      <view class="detail_info">
        <view>休假次数:</view>
        <view>{{item.department}}</view>
      </view>
      <view class="detail_info">
        <view class="status">{{item.status}}</view>
      </view>
    </view>
    <view class="arrow_right"></view>
  </view>
</template>
<!-- 私车 -->
<template name="private">
  <view class="pendingItem clearfix" hover-class="pressed_view">
    <image class="user_icon" src="{{icon}}"></image>
    <view class="user_info">
      <view class="user_name">{{item.applyMan}}</view>
      <view class="user_applytype">私车申请</view>
    </view>
    <view class="check_info">
      <view class="detail_info">
        <view>出发地点:</view>
        <view>{{item.beginAddress}}</view>
      </view>
      <view class="detail_info">
        <view>目的地点:</view>
        <view>{{item.destination}}</view>
      </view>
      <view class="detail_info">
        <view>申请部门:</view>
        <view>{{item.department}}</view>
      </view>
      <view class="detail_info">
        <view class="status">{{item.status}}</view>
      </view>
    </view>
    <view class="arrow_right"></view>
  </view>
</template>
<!-- 招待 -->
<template name="entertain">
  <view class="pendingItem clearfix" hover-class="pressed_view">
    <image class="user_icon" src="{{icon}}"></image>
    <view class="user_info">
      <view class="user_name">{{item.manager}}</view>
      <view class="user_applytype">招待申请</view>
    </view>
    <view class="check_info">
      <view class="detail_info">
        <view>申请时间:</view>
        <view>{{item.applyTime}}</view>
      </view>
      <view class="detail_info">
        <view>招待单位:</view>
        <view>{{item.entertainObject}}</view>
      </view>
      <view class="detail_info">
        <view>申请部门:</view>
        <view>{{item.department}}</view>
      </view>
      <view class="detail_info">
        <view class="status">{{item.status}}</view>
      </view>
    </view>
    <view class="arrow_right"></view>
  </view>
</template>
<!-- 公车 -->
<template name="public">
  <view class="pendingItem clearfix" hover-class="pressed_view">
    <image class="user_icon" src="{{icon}}"></image>
    <view class="user_info">
      <view class="user_name">{{item.applyMan}}</view>
      <view class="user_applytype">公车申请</view>
    </view>
    <view class="check_info">
      <view class="detail_info">
        <view>申请部门:</view>
        <view>{{item.department}}</view>
      </view>
      <view class="detail_info">
        <view>预借时间:</view>
        <view>{{item.beginTimePlan}}</view>
      </view>
      <view class="detail_info">
        <view>预还时间:</view>
        <view>{{item.endTimePlan}}</view>
      </view>
      <view class="detail_info">
        <view class="status">{{item.state}}</view>
      </view>
    </view>
    <view class="arrow_right"></view>
  </view>
</template>
<!-- 差旅 -->
<template name="travel">
  <view class="pendingItem clearfix" hover-class="pressed_view">
    <image class="user_icon" src="{{icon}}"></image>
    <view class="user_info">
      <view class="user_name">{{item.applyMan}}</view>
      <view class="user_applytype">差旅申请</view>
    </view>
    <view class="check_info">
      <view class="detail_info">
        <view>申请时间:</view>
        <view>{{item.applyTime}}</view>
      </view>
      <view class="detail_info">
        <view>出差天数:</view>
        <view>{{item.travelDays}}</view>
      </view>
      <view class="detail_info">
        <view>申请部门:</view>
        <view>{{item.department}}</view>
      </view>
      <view class="detail_info">
        <view class="status">{{item.approveState}}</view>
      </view>
    </view>
    <view class="arrow_right"></view>
  </view>
</template>
<!-- 财务审批的私车 -->
<template name="finance_private">
  <view class="pendingItem clearfix" hover-class="pressed_view">
    <image class="user_icon" src="{{icon}}"></image>
    <view class="user_info">
      <view class="user_name">{{item.applyMan}}</view>
      <view class="user_applytype">的私车公用</view>
    </view>
    <view class="check_info">
      
      <view class="detail_info">
        <view>条数:</view>
        <view>{{item.sureLength}}</view>
      </view>
      <view class="detail_info">
        <view>金额:</view>
        <view>{{item.sum}}元</view>
      </view>
      <view class="detail_info">
        <view>申请时间:</view>
        <view>{{item.applyTime}}</view>
      </view>
      <view class="detail_info">
        <view class="status">{{item.status}}</view>
      </view>
    </view>
    <view class="arrow_right"></view>
  </view>
</template>
<!-- 财务审批的招待 -->
<template name="finance_entertain">
  <view class="pendingItem clearfix" hover-class="pressed_view" bindtap="toFinanceDetail">
    <image class="user_icon" src="{{icon}}"></image>
    <view class="user_info">
      <view class="user_name">{{item.applyMan}}</view>
      <view class="user_applytype">的业务招待</view>
    </view>
    <view class="check_info">
      <view class="detail_info">
        <view>审批编号:</view>
        <view>{{item.applyTime}}</view>
      </view>
      <view class="detail_info">
        <view>登记人:</view>
        <view>{{item.department}}</view>
      </view>
      <view class="detail_info">
        <view class="status">{{item.approveState}}</view>
      </view>
    </view>
    <view class="arrow_right"></view>
  </view>
</template>
<!-- pages/operatePages/myCheck/checkList/checkList.wxml -->

<import src="./template.wxml"></import>

<view class="bgr">

  <!-- tab标签 -->
  <view class="operate">
    <view class="operate_item {{currentTab == 'pending' ?'active':''}}" data-status="pending" bindtap="switchNav">
      <view class="operate_text">待我审批的({{pendingNumber}})</view>
    </view>
    <view class="operate_item {{currentTab == 'approved' ?'active':''}}" data-status="approved" bindtap="switchNav">
      <view class="operate_text">我已审批的</view>
    </view>
  </view>

  <!-- 待我审批的 -->
  <view class="pending" hidden="{{currentTab!=='pending'}}">
    <view wx:for="{{pendingList}}" wx:key="key" wx:for-item="item">
      <view id="{{index}}" bindtap="toPendingDetailItem">
        <template data="{{item,icon,index}}" is="item"></template>
      </view>
    </view>
  </view>

  <!-- 我已审批的 -->
  <view class="approved" hidden="{{currentTab!=='approved'}}">
    <view wx:for="{{approvedList}}" wx:key="key" wx:for-item="item">
      <view id="{{index}}" bindtap="toApprovedDetailItem">
        <template data="{{item,icon}}" is="item"></template>
      </view>
    </view>
  </view>

</view>

注意:template可以传多个参数,用逗号隔开。
主要实现的功能就是,根据后台传过来的title,判断使用哪一个模板,从而显示不同的样式和不同的操作。下面是样图:
微信小程序 模板的使用

相关文章: