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


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 相关文章推荐
json的前台操作和后台操作实现代码
Jan 20 Javascript
如何将JS的变量值传递给ASP变量
Dec 10 Javascript
js的Prototype属性解释及常用方法
May 08 Javascript
javascript中expression的用法整理
May 13 Javascript
node.js中的fs.appendFile方法使用说明
Dec 17 Javascript
基于Bootstrap的Metronic框架实现页面链接收藏夹功能
Aug 29 Javascript
js实现动态显示时间效果
Mar 06 Javascript
JS实现十字坐标跟随鼠标效果
Dec 25 Javascript
vue 虚拟dom的patch源码分析
Mar 01 Javascript
JavaScript日期工具类DateUtils定义与用法示例
Sep 03 Javascript
关于微信小程序map组件z-index的层级问题分析
Jul 09 Javascript
JavaScript的一些小技巧分享
Jan 06 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将12小时制转换成24小时制的方法
2015/03/31 PHP
深入浅析PHP7.0新特征(五大新特征)
2015/10/29 PHP
php执行多个存储过程的方法【基于thinkPHP】
2016/11/08 PHP
Zend Framework入门教程之Zend_Db数据库操作详解
2016/12/08 PHP
php使用GD2绘制几何图形示例
2017/02/15 PHP
jquery 多级下拉菜单核心代码
2010/05/21 Javascript
Jquery中删除元素的实现代码
2011/12/29 Javascript
jquery选择器原理介绍($()使用方法)
2014/03/25 Javascript
谈谈javascript中使用连等赋值操作带来的问题
2015/11/26 Javascript
javascript设计模式--策略模式之输入验证
2015/11/27 Javascript
jQuery中cookie插件用法实例分析
2015/12/04 Javascript
基于jquery实现的鼠标悬停提示案例
2016/12/11 Javascript
使用NestJS开发Node.js应用的方法
2018/12/03 Javascript
微信小程序textarea层级过高(盖住其他元素)问题的解决办法
2019/03/04 Javascript
[00:55]2015国际邀请赛中国区预选赛5月23日——28日约战上海
2015/05/25 DOTA
Python中实现的RC4算法
2015/02/14 Python
Python json模块使用实例
2015/04/11 Python
python异常和文件处理机制详解
2016/07/19 Python
python 读写中文json的实例详解
2017/10/29 Python
Python实现的服务器示例小结【单进程、多进程、多线程、非阻塞式】
2019/05/23 Python
python儿童学游戏编程知识点总结
2019/06/03 Python
在Django admin中编辑ManyToManyField的实现方法
2019/08/09 Python
Pytorch提取模型特征向量保存至csv的例子
2020/01/03 Python
分享全球十款超强HTML5开发工具
2014/05/14 HTML / CSS
Theflamel意大利:女士奢华服装、鞋子和配件
2020/01/11 全球购物
荣耀商城:HIHONOR
2020/11/03 全球购物
销售人员中英文自荐信
2013/09/22 职场文书
综合办公室个人的自我评价
2013/12/22 职场文书
怎样写好自荐信和推荐信
2013/12/26 职场文书
毕业生个人投资创业计划书
2014/01/04 职场文书
三八节标语
2014/06/27 职场文书
会计专业应届生自荐信
2014/06/28 职场文书
普通党员整改措施
2014/10/24 职场文书
成绩单家长意见
2015/06/03 职场文书
Nginx进程管理和重载原理详解
2021/04/22 Servers
MySQL优化之如何写出高质量sql语句
2021/05/17 MySQL