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


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中的常见排序算法
Mar 27 Javascript
简单通用的JS滑动门代码
Dec 19 Javascript
jquery 合并内容相同的单元格(示例代码)
Dec 13 Javascript
jQuery实现ctrl+enter(回车)提交表单
Oct 19 Javascript
Vuejs第六篇之Vuejs与form元素实例解析
Sep 05 Javascript
js图片轮播手动切换特效
Jan 12 Javascript
利用jQuery异步上传文件的插件用法详解
Jul 19 jQuery
JSON对象转化为字符串详解
Aug 11 Javascript
node.js-v6新版安装具体步骤(分享)
Sep 06 Javascript
在vue项目中使用element-ui的Upload上传组件的示例
Feb 08 Javascript
Vue.js实现图片的随意拖动方法
Mar 08 Javascript
Vue不能观察到数组length的变化
Jun 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
PHP对象转换为数组函数(递归方法)
2012/02/04 PHP
php中array_multisort对多维数组排序的方法
2020/06/21 PHP
利用PHP获取网站访客的所在地位置
2017/01/18 PHP
PHP实现数组根据某个单元字段排序操作示例
2018/08/01 PHP
PHP远程连接oracle数据库操作实现方法图文详解
2019/04/11 PHP
js 实现 input type=&quot;file&quot; 文件上传示例代码
2013/08/07 Javascript
AMD异步模块定义介绍和Require.js中使用jQuery及jQuery插件的方法
2014/06/06 Javascript
探讨JavaScript中的Rest参数和参数默认值
2015/07/29 Javascript
浅析javascript中的事件代理
2015/11/06 Javascript
JS组件系列之Bootstrap table表格组件神器【终结篇】
2016/05/10 Javascript
原生js仿jquery一些常用方法(必看篇)
2016/09/20 Javascript
vue.js之vue-cli脚手架的搭建详解
2017/05/05 Javascript
nodejs multer实现文件上传与下载
2017/05/10 NodeJs
Vue.js中关于侦听器(watch)的高级用法示例
2018/05/02 Javascript
聊聊鉴权那些事(推荐)
2019/08/22 Javascript
js中的this的指向问题详解
2019/08/29 Javascript
JS实现的雪花飘落特效示例
2019/12/03 Javascript
js 计算月/周的第一天和最后一天代码
2020/02/01 Javascript
用vue写一个日历
2020/11/02 Javascript
[03:04]DOTA2超级联赛专访ZSMJ “莫名其妙”的逆袭
2013/05/23 DOTA
[41:20]2014 DOTA2华西杯精英邀请赛 5 24 NewBee VS DK
2014/05/26 DOTA
[01:31]完美与DOTA2历程
2014/07/31 DOTA
python创建和删除目录的方法
2015/04/29 Python
可能是最全面的 Python 字符串拼接总结【收藏】
2018/07/09 Python
Python Tensor FLow简单使用方法实例详解
2020/01/14 Python
在HTML5 canvas里用卷积核进行图像处理的方法
2018/05/02 HTML / CSS
华润集团网上药店:健一网
2016/09/19 全球购物
医生个人自我剖析材料
2014/10/08 职场文书
初中学生操行评语
2014/12/26 职场文书
放射科岗位职责
2015/02/14 职场文书
烈士陵园观后感
2015/06/08 职场文书
Ajax是什么?Ajax高级用法之Axios技术
2021/04/21 Javascript
Spring mvc是如何实现与数据库的前后端的连接操作的?
2021/06/30 Java/Android
5道关于python基础 while循环练习题
2021/11/27 Python
Go语言特点及基本数据类型使用详解
2022/03/21 Golang
muduo TcpServer模块源码分析
2022/04/26 Redis