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


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判断非数字的简单例子
Jul 18 Javascript
JavaScript DOM节点添加示例
Jul 16 Javascript
jQuery+css实现百度百科的页面导航效果
Dec 16 Javascript
js创建对象的方式总结
Jan 10 Javascript
javascript表格的渲染组件
Jul 03 Javascript
针对后台列表table拖拽比较实用的jquery拖动排序
Oct 10 Javascript
详解在Angularjs中ui-sref和$state.go如何传递参数
Apr 24 Javascript
深入浅析AngularJS中的一次性数据绑定 (bindonce)
May 11 Javascript
详解vue文件中使用echarts.js的两种方式
Oct 18 Javascript
js操作table中tr的顺序实现上移下移一行的效果
Nov 22 Javascript
解决layui的table插件无法多层级获取json数据的问题
Sep 19 Javascript
javascript运行机制之执行顺序理解
Aug 03 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生成Flash动画的实现代码
2010/03/12 PHP
php中time()和mktime()方法的区别
2013/09/28 PHP
PHP提示Warning:phpinfo() has been disabled函数禁用的解决方法
2014/12/17 PHP
php检测文本的编码
2015/07/26 PHP
Smarty实现页面静态化(生成HTML)的方法
2016/05/23 PHP
PHP 中TP5 Request 请求对象的实例详解
2017/07/31 PHP
php基于Redis消息队列实现的消息推送的方法
2018/11/28 PHP
PHP+redis实现微博的拉模型案例详解
2019/07/10 PHP
JavaScript中关于indexOf的使用方法与问题小结
2010/08/05 Javascript
nullJavascript中创建对象的五种方法实例
2013/05/07 Javascript
jquery鼠标滑过提示title具体实现代码
2013/08/06 Javascript
深入理解JavaScript单体内置对象
2016/06/06 Javascript
jQuery通过ajax请求php遍历json数组到table中的代码(推荐)
2016/06/12 Javascript
angular项目中bootstrap-datetimepicker时间插件的使用示例
2018/03/15 Javascript
超轻量级的js时间库miment使用解析
2019/08/02 Javascript
js实现div色块碰撞
2020/01/16 Javascript
[59:53]DOTA2-DPC中国联赛 正赛 VG vs Elephant BO3 第二场 3月6日
2021/03/11 DOTA
详解Python编程中对Monkey Patch猴子补丁开发方式的运用
2016/05/27 Python
基于Tensorflow:CPU性能分析
2020/02/10 Python
git查看、创建、删除、本地、远程分支方法详解
2020/02/18 Python
运行python提示no module named sklearn的解决方法
2020/11/29 Python
python 模拟登陆163邮箱
2020/12/15 Python
CSS3属性使网站设计增强同时不消弱可用性
2009/08/29 HTML / CSS
adidas旗下高尔夫装备供应商:TaylorMade Golf(泰勒梅高尔夫)
2016/08/28 全球购物
墨西哥网上购物:Linio墨西哥
2016/10/20 全球购物
毕业生的自我鉴定该怎么写
2013/12/02 职场文书
大学老师推荐信
2014/02/25 职场文书
读书演讲主持词
2014/03/18 职场文书
《高尔基和他的儿子》教学反思
2014/04/09 职场文书
高中语文课后反思
2014/04/27 职场文书
庆元旦活动总结
2014/07/09 职场文书
致百米运动员广播稿5篇
2014/10/13 职场文书
房地产工程部经理岗位职责
2015/04/09 职场文书
中学语文教学反思
2016/02/16 职场文书
教你如何用Python实现人脸识别(含源代码)
2021/06/23 Python
Golang 入门 之url 包
2022/05/04 Golang