详解微信小程序中的页面代码中的模板的封装


Posted in Javascript onOctober 12, 2017

详解微信小程序中的页面代码中的模板的封装

    最近在进行微信小程序中的页面开发,其实在c++或者说是js中都会出现这种情况,就是相同的代码会反复出现,这就是进行一定的封装,封装的好处就是可以是程序中在于减少一定的代码量,并且可是使代码结构更加清晰。那今天所要记录的就是关于微信小程序中的页面的模板封装。

         在微信小程序中的文件名都带有wxml等样式,在wxml中提供了模板,即可以在模板中定义代码片段,然后可以在页面中的不同位置进行调用,模板的定义:

<templatename="products">

<blockwx:for="{{productsData}}">

<view 
class="product-desc">

<view 
class="product-cun">有货</view>

<view 
class="product-name">{{item.name}}</view>

<view 
class="product-price">¥{{item.price}}</view>

</view>

</block>

</template>

name主要就是给封装好的模板进行命名,因为可能模板文件中不一定就只存在这一个模板,所以命名化可以方便区分哪个是要引入的模板。

wx:for就是微信小程序中的循环,里面就是要循环的数组数据,这个值是可以在引入模板的时候进行引入赋值的。

模板的导入:

<import src=""/>---要找到要引入的模板文件路径,这里面的路径写相对路径会很方便

模板的使用:

<template 
is="products" 
data="{{productsData}}"/>

is的作用就是在模板文件中选择要使用的具体是哪个模板

data主要就是模板中要使用的数组数据

这里面就是出现一个问题,由于你的模板文件中的数组是写死的,使用的是productData,那么在你引入模板之后对里面的数据进行赋值使用的时候可能会出现

VM1171:2 ./pages/theme/theme.wxml
 Bad attr 'data' with message
  6 |  </view>
  7 |  <view class="theme-products">
> 8 |   <template is="products" data="{{theme_products[themeid]}}"/> 
   |                 ^
  9 |  </view>
 10 | </view>
 11 |

像这种在模板中的数据被定义死的话,也是可以有解决办法的,我所使用的办法就是给已经被赋值好的数组进行重新赋值
可以在新的页面js中对productsData数组进行空的初始化,然后在onLoad第一次进行页面,进行加载页面的时候给予赋值,data.kind_products是这个页面要使用到的数组对象

1)js文件中的data{productsData:null}
2)第一次进入页面的时候

onLoad: function (options) {
  this.setData({ productsData: this.data.kind_products[0]});
}

setData的作用就是用于将数据从逻辑层发送到视图层也就是页面上,同时改变this.data的值

如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

Javascript 相关文章推荐
js控制表单操作的常用代码小结
Aug 15 Javascript
JavaScript获取DOM元素的11种方法总结
Apr 25 Javascript
JQuery选中checkbox方法代码实例(全选、反选、全不选)
Apr 27 Javascript
JavaScript实现相册弹窗功能(zepto.js)
Jun 21 Javascript
JS及PHP代码编写八大排序算法
Jul 12 Javascript
jQuery Mobile和HTML5开发App推广注册页
Nov 07 Javascript
javascript实现将数字转成千分位的方法小结【5种方式】
Dec 11 Javascript
详解从买域名到使用pm2部署node.js项目全过程
Mar 07 Javascript
深入浅析Vue中的slots/scoped slots
Apr 03 Javascript
详解iview的checkbox多选框全选时校验问题
Jun 10 Javascript
JavaScript实现简单的计算器
Jan 16 Javascript
基于postman获取动态数据过程详解
Sep 08 Javascript
BootStrap Validator 根据条件在JS中添加或移除校验操作
Oct 12 #Javascript
Angular实现预加载延迟模块的示例
Oct 12 #Javascript
使用cookie绕过验证码登录的实现代码
Oct 12 #Javascript
bootstrap可编辑下拉框jquery.editable-select
Oct 12 #jQuery
使用原生js封装的ajax实例(兼容jsonp)
Oct 12 #Javascript
vue学习之mintui picker选择器实现省市二级联动示例
Oct 12 #Javascript
jQuery中 DOM节点操作方法大全
Oct 12 #jQuery
You might like
使用GROUP BY的时候如何统计记录条数 COUNT(*) DISTINCT
2011/04/23 PHP
PHP+Mysql实现多关键字与多字段生成SQL语句的函数
2014/11/05 PHP
PHP面向对象中new self()与 new static()的区别浅析
2017/08/17 PHP
Laravel推荐使用的十个辅助函数
2019/05/10 PHP
js与css实现弹出层覆盖整个页面的方法
2014/12/13 Javascript
javascript使用smipleChart实现简单图表
2015/01/02 Javascript
javascript实现带节日和农历的日历特效
2015/02/01 Javascript
使用JavaScript开发IE浏览器本地插件实例
2015/02/18 Javascript
Javascript调用函数方法的几种方式介绍
2015/03/20 Javascript
jQuery移动端图片上传组件
2016/06/12 Javascript
移动端 一个简单易懂的弹出框
2016/07/06 Javascript
Bootstrap CSS组件之按钮组(btn-group)
2016/12/17 Javascript
JSON 数据详解及实例代码分析
2017/01/20 Javascript
Node.js常用工具之util模块
2017/03/09 Javascript
vue脚手架中配置Sass的方法
2018/01/04 Javascript
在Vue中使用echarts的方法
2018/02/05 Javascript
vue写一个组件
2018/04/09 Javascript
JS实现的base64加密解密操作示例
2018/04/18 Javascript
Angular6 写一个简单的Select组件示例
2018/08/20 Javascript
Vue父子组件之间的通信实例详解
2018/09/28 Javascript
vue 使用外部JS与调用原生API操作示例
2019/12/02 Javascript
js实现小星星游戏
2020/03/23 Javascript
详解Python各大聊天系统的屏蔽脏话功能原理
2016/12/01 Python
python爬虫框架talonspider简单介绍
2017/06/09 Python
Django使用httpresponse返回用户头像实例代码
2018/01/26 Python
详解python中的json和字典dict
2018/06/22 Python
对python中Librosa的mfcc步骤详解
2019/01/09 Python
python读取.mat文件的数据及实例代码
2019/07/12 Python
python+selenium+chromedriver实现爬虫示例代码
2020/04/10 Python
python中添加模块导入路径的方法
2021/02/03 Python
施华洛世奇天猫官方旗舰店:SWAROVSKI
2017/04/17 全球购物
Tiqets荷兰:出售欧洲最美丽的景点和博物馆门票
2018/01/09 全球购物
《确定位置》教学反思
2016/02/18 职场文书
2016见义勇为事迹材料汇总
2016/03/01 职场文书
PL350与SW11的比较
2021/04/22 无线电
为什么MySQL8新特性会修改自增主键属性
2022/04/18 MySQL