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


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 相关文章推荐
javascript-简单的日历实现及Date对象语法介绍(附图)
May 30 Javascript
JavaScript避免内存泄露及内存管理技巧
Sep 05 Javascript
完美实现bootstrap分页查询
Dec 09 Javascript
微信小程序 input输入框控件详解及实例(多种示例)
Dec 14 Javascript
js判断iframe中元素是否存在的实现代码
Dec 24 Javascript
js实现密码强度检验
Jan 15 Javascript
JS通过调用微信API实现微信支付功能的方法示例
Jun 29 Javascript
快速了解vue-cli 3.0 新特性
Feb 28 Javascript
vue v-model动态生成详解
Jun 30 Javascript
30分钟精通React今年最劲爆的新特性——React Hooks
Mar 11 Javascript
微信小程序:数据存储、传值、取值详解
May 07 Javascript
微信小程序如何通过用户授权获取手机号(getPhoneNumber)
Jan 21 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
免费的ip数据库淘宝IP地址库简介和PHP调用实例
2014/04/08 PHP
关于PHP中字符串与多进制转换函数的实例代码
2016/11/03 PHP
php利用imagemagick实现复古老照片效果实例
2017/02/16 PHP
Laravel 创建指定表 migrate的例子
2019/10/09 PHP
javascript 读取XML数据,在页面中展现、编辑、保存的实现
2009/10/27 Javascript
基于jquery的回到页面顶部按钮
2011/06/27 Javascript
用jQuery模拟页面加载进度条的实现代码
2011/12/19 Javascript
jquery实现表格奇数偶数行不同样式(有图为证及实现代码)
2013/01/23 Javascript
纯js实现遮罩层效果原理分析
2014/05/27 Javascript
小米公司JavaScript面试题
2014/12/29 Javascript
Easyui使用Dialog行内按钮布局的实例
2017/07/27 Javascript
inner join 内联与left join 左联的实例代码
2017/09/18 Javascript
微信小程序分享功能之按钮button 边框隐藏和点击隐藏
2018/06/14 Javascript
vue数据操作之点击事件实现num加减功能示例
2019/01/19 Javascript
vue微信分享的实现(在当前页面分享其他页面)
2019/04/16 Javascript
Moment.js实现多个同时倒计时
2019/08/26 Javascript
微信小程序实现吸顶特效
2020/01/08 Javascript
antd vue table跨行合并单元格,并且自定义内容实例
2020/10/28 Javascript
理解Python垃圾回收机制
2016/02/12 Python
Python中的字符串操作和编码Unicode详解
2017/01/18 Python
浅谈pandas中shift和diff函数关系
2018/04/08 Python
pandas数值计算与排序方法
2018/04/12 Python
解决python3捕获cx_oracle抛出的异常错误问题
2018/10/18 Python
python实现文本界面网络聊天室
2018/12/12 Python
django中forms组件的使用与注意
2019/07/08 Python
python下对hsv颜色空间进行量化操作
2020/06/04 Python
如何用 Python 制作一个迷宫游戏
2021/02/25 Python
荷兰超市:DEEN
2018/03/14 全球购物
HomeAway英国:全球领先的度假租赁在线市场
2020/02/03 全球购物
乐高瑞士官方商店:LEGO CH
2020/08/16 全球购物
感恩母亲节演讲稿
2014/05/07 职场文书
考试作弊检讨书1000字(5篇)
2014/10/19 职场文书
公司股份转让协议书范本
2015/01/28 职场文书
2015年政府采购工作总结
2015/05/21 职场文书
简短清晨问候语
2015/11/10 职场文书
2016年基层党组织创先争优承诺书
2016/03/25 职场文书