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


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 相关文章推荐
JQuery 操作Javascript对象和数组的工具函数小结
Jan 22 Javascript
jquery的$(document).ready()和onload的加载顺序
May 26 Javascript
JQuery事件e参数的方法preventDefault()取消默认行为
Sep 26 Javascript
将中国标准时间转换成标准格式的代码
Mar 20 Javascript
javascript模拟php函数in_array
Apr 27 Javascript
利用js实现禁止复制文本信息
Jun 03 Javascript
JS组件Bootstrap ContextMenu右键菜单使用方法
Apr 17 Javascript
纯js实现画一棵树的示例
Sep 05 Javascript
javascript显示动态时间的方法汇总
Jul 06 Javascript
VUE渲染后端返回含有script标签的html字符串示例
Oct 28 Javascript
three.js着色器材质的内置变量示例详解
Aug 16 Javascript
vue 递归组件的简单使用示例
Jan 14 Vue.js
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
PHP 巧用数组降低程序的时间复杂度
2010/01/01 PHP
php设计模式 Adapter(适配器模式)
2011/06/26 PHP
php实现mysql数据库操作类分享
2014/02/14 PHP
ThinkPHP查询中的魔术方法简述
2014/06/25 PHP
Laravel中使用FormRequest进行表单验证方法及问题汇总
2016/06/19 PHP
javascript 闭包疑问
2010/12/30 Javascript
jquery 之 $().hover(func1, funct2)使用方法
2012/06/14 Javascript
JS中Iframe之间传值的方法
2013/03/11 Javascript
单击复制文字兼容各浏览器的完美解决方案
2013/07/04 Javascript
浅析JS中document对象的一些重要属性
2014/03/06 Javascript
jQuery使用fadeout实现元素渐隐效果的方法
2015/03/27 Javascript
jquery实现点击弹出带标题栏的弹出层(从右上角飞入)效果
2015/09/19 Javascript
Clipboard.js 无需Flash的JavaScript复制粘贴库
2015/10/02 Javascript
AngularJS使用自定义指令替代ng-repeat的方法
2016/09/17 Javascript
webpack入门+react环境配置
2017/02/08 Javascript
使用jQuery卸载全部事件的思路详解
2017/04/03 jQuery
详解浏览器缓存和webpack缓存配置
2018/07/06 Javascript
JS实现数组去重,显示重复元素及个数的方法示例
2019/01/21 Javascript
配置eslint规范项目代码风格
2019/03/11 Javascript
解决pip install xxx报错SyntaxError: invalid syntax的问题
2018/11/30 Python
python 图片去噪的方法示例
2019/07/09 Python
详解python中自定义超时异常的几种方法
2019/07/29 Python
python数据爬下来保存的位置
2020/02/17 Python
python 使用xlsxwriter循环向excel中插入数据和图片的操作
2021/01/01 Python
全球知名提供各类营养保健品的零售商:Vitamin Shoppe
2016/10/09 全球购物
美国著名的户外用品品牌:L.L.Bean
2018/01/05 全球购物
文体活动实施方案
2014/03/27 职场文书
教师节演讲稿
2014/05/06 职场文书
乡村教师党员四风问题对照检查材料思想汇报
2014/10/08 职场文书
出租车拒载检讨书
2015/01/28 职场文书
小学教师节活动总结
2015/03/20 职场文书
小兵张嘎电影观后感
2015/06/03 职场文书
2016年教师师德师风承诺书
2016/03/25 职场文书
使用react+redux实现计数器功能及遇到问题
2021/06/02 Javascript
Golang 语言控制并发 Goroutine的方法
2021/06/30 Golang
Python中tqdm的使用和例子
2022/09/23 Python