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


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实现表格奇数偶数行不同样式(有图为证及实现代码)
Jan 23 Javascript
JS定时关闭窗口的实例
May 22 Javascript
GridView中获取被点击行中的DropDownList和TextBox中的值
Jul 18 Javascript
iframe实用操作锦集
Apr 22 Javascript
JS实现文字放大效果的方法
Mar 03 Javascript
jQuery处理图片加载失败的常用方法
Jun 08 Javascript
jQuery地图map悬停显示省市代码分享
Aug 20 Javascript
js实现select跳转菜单新窗口效果代码分享(超简单)
Aug 21 Javascript
JavaScript 栈的详解及实例代码
Jan 22 Javascript
ionic选择多张图片上传的示例代码
Oct 10 Javascript
详解Vue用自定义指令完成一个下拉菜单(select组件)
Oct 31 Javascript
在vue中动态修改css其中一个属性值操作
Dec 07 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的图形函数中显示汉字
2006/10/09 PHP
解析使用ThinkPHP应该掌握的调试手段
2013/06/20 PHP
destoon复制新模块的方法
2014/06/21 PHP
php自动识别文字编码并转换为目标编码的方法
2015/08/08 PHP
PHP中SSO Cookie登录分析和实现
2015/11/06 PHP
PHP分页初探 一个最简单的PHP分页代码的简单实现
2016/06/21 PHP
为JavaScript类型增加方法的实现代码(增加功能)
2011/12/29 Javascript
JavaScript mapreduce工作原理简析
2012/11/25 Javascript
JQuery控制Radio选中方法分析
2015/05/29 Javascript
详解AngularJS中的filter过滤器用法
2016/01/04 Javascript
AngularJS下对数组的对比分析
2016/08/24 Javascript
浅谈jQuery操作类数组的工具方法
2016/12/23 Javascript
vue + any-touch实现一个iscroll 实现拖拽和滑动动画效果
2019/04/08 Javascript
jQuery Datatables 动态列+跨列合并实现代码
2020/01/30 jQuery
javascript贪吃蛇游戏设计与实现
2020/09/17 Javascript
Python标准库之collections包的使用教程
2017/04/27 Python
Python os.rename() 重命名目录和文件的示例
2018/10/25 Python
Python实现的KMeans聚类算法实例分析
2018/12/29 Python
python如何制作缩略图
2019/04/30 Python
python opencv摄像头的简单应用
2019/06/06 Python
python实现通过队列完成进程间的多任务功能示例
2019/10/28 Python
Python使用PyQt5/PySide2编写一个极简的音乐播放器功能
2020/02/07 Python
django2.2 和 PyMySQL版本兼容问题
2020/02/17 Python
Java Spring项目国际化(i18n)详细方法与实例
2020/03/20 Python
python批量合成bilibili的m4s缓存文件为MP4格式 ver2.5
2020/12/01 Python
CSS Grid布局教程之网格单元格布局
2014/12/30 HTML / CSS
HTML块级标签汇总(小篇)
2016/07/13 HTML / CSS
YSL Beauty加拿大官方商城:圣罗兰美妆加拿大
2017/05/15 全球购物
Nike澳大利亚官网:Nike.com (AU)
2019/06/03 全球购物
《赠汪伦》教学反思
2014/04/12 职场文书
公司领导班子对照检查存在问题整改措施
2014/10/02 职场文书
党的群众路线教育实践活动个人对照检查材料(医生)
2014/11/05 职场文书
2014年路政工作总结
2014/12/10 职场文书
财务部会计岗位职责
2015/02/03 职场文书
元宵节晚会主持词
2015/07/01 职场文书
MySQL查询日期时间
2022/05/15 MySQL