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


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 相关文章推荐
window.name代替cookie的实现代码
Nov 28 Javascript
JavaScript中变量声明有var和没var的区别示例介绍
Sep 15 Javascript
javascript实现图像循环明暗变化的方法
Feb 25 Javascript
JS实现可直接显示网页代码运行效果的HTML代码预览功能实例
Aug 06 Javascript
几行js代码实现自适应
Feb 24 Javascript
JavaScript上传文件时不用刷新页面方法总结(推荐)
Aug 15 Javascript
layer ui插件显示tips时,修改字体颜色的实现方法
Sep 11 Javascript
Node如何后台数据库使用增删改查功能
Nov 21 Javascript
leaflet加载geojson叠加显示功能代码
Feb 21 Javascript
js实现跳一跳小游戏
Jul 31 Javascript
JQuery使用数组遍历跳出each循环
Sep 01 jQuery
vue route新窗口跳转页面并且携带与接收参数
Apr 10 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
轻松修复Discuz!数据库
2008/05/03 PHP
PHP生成条形码大揭秘
2015/09/24 PHP
PHP的swoole扩展安装方法详细教程
2016/05/18 PHP
php利用递归实现删除文件目录的方法
2016/09/23 PHP
Javascript在IE和FireFox中的不同表现简析
2012/12/03 Javascript
js实现百度联盟中一款不错的图片切换效果完整实例
2015/03/04 Javascript
今天抽时间给大家整理jquery和ajax的相关知识
2015/11/17 Javascript
详解AngularJS Filter(过滤器)用法
2015/12/28 Javascript
第九章之路径分页标签与徽章组件
2016/04/25 Javascript
浅谈键盘上回车按钮的js触发事件
2017/02/13 Javascript
Vue的MVVM实现方法
2017/08/16 Javascript
使用socket.io制做简易WEB聊天室
2018/01/02 Javascript
Angular Renderer (渲染器)的具体使用
2018/05/03 Javascript
微信小程序实现刷脸登录
2018/05/25 Javascript
vue 修改 data 数据问题并实时显示的方法
2018/08/27 Javascript
js实现盒子移动动画效果
2020/08/09 Javascript
vue $router和$route的区别详解
2020/12/02 Vue.js
JS常用跨域方法实现原理解析
2020/12/09 Javascript
常用python编程模板汇总
2016/02/12 Python
利用Pycharm断点调试Python程序的方法
2018/11/29 Python
Python3数字求和的实例
2019/02/19 Python
Python替换月份为英文缩写的实现方法
2019/07/15 Python
Django实现跨域请求过程详解
2019/07/25 Python
python使用socket实现的传输demo示例【基于TCP协议】
2019/09/24 Python
浅谈keras中的后端backend及其相关函数(K.prod,K.cast)
2020/06/29 Python
促销活动策划方案
2014/01/12 职场文书
大家检讨书5000字
2014/02/03 职场文书
激励口号大全
2014/06/17 职场文书
法学院毕业生求职信
2014/06/25 职场文书
人事任命通知
2015/04/20 职场文书
2015年信息宣传工作总结
2015/05/26 职场文书
运动会5000米加油稿
2015/07/21 职场文书
致短跑运动员加油稿
2015/07/21 职场文书
消防演习感想
2015/08/10 职场文书
Go Gin实现文件上传下载的示例代码
2021/04/02 Golang
python​格式化字符串
2022/04/20 Python