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


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表达式中连续的 &amp;&amp; 和 || 之赋值区别
Oct 17 Javascript
用Jquery实现多级下拉框无刷新的联动
Dec 22 Javascript
JSONP跨域的原理解析及其实现介绍
Mar 22 Javascript
js光标定位文本框回车表单提交问题的解决方法
May 11 Javascript
Node.js文件操作方法汇总
Mar 22 Javascript
Node.js刷新session过期时间的实现方法推荐
May 18 Javascript
原生js实现tab选项卡切换
Mar 23 Javascript
Javascript中字符串replace方法的第二个参数探究
Dec 05 Javascript
php简单数据库操作类的封装
Jun 08 Javascript
Vue 全家桶实现移动端酷狗音乐功能
Nov 16 Javascript
elementUI 动态生成几行几列的方法示例
Jul 11 Javascript
vue 出现data-v-xxx的原因及解决
Aug 04 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简单分页类实现方法
2015/02/26 PHP
PHP中读取文件的几个方法总结(推荐)
2016/06/03 PHP
ThinkPhP+Apache+PHPstorm整合框架流程图解
2020/11/23 PHP
javascript innerHTML、outerHTML、innerText、outerText的区别
2008/11/24 Javascript
JQuery从头学起第三讲
2010/07/06 Javascript
js 实现图片预加载(js操作 Image对象属性complete ,事件onload 异步加载图片)
2011/03/25 Javascript
js为数字添加逗号并格式化数字的代码
2013/08/23 Javascript
jquery插件lazyload.js延迟加载图片的使用方法
2014/02/19 Javascript
jquery让返回的内容显示在特定div里(代码少而精悍)
2014/06/23 Javascript
浅谈JS日期(Date)处理函数
2014/12/07 Javascript
关于JS中的方法是否加括号的问题
2016/07/27 Javascript
js表单登陆验证示例
2016/10/19 Javascript
JS 终止执行的实现方法
2016/11/24 Javascript
DWR3 访问WEB元素的两种方法实例详解
2017/01/03 Javascript
js中创建对象的几种方式
2017/02/05 Javascript
原生JS仿QQ阅读点击展开、收起效果
2017/03/08 Javascript
vue 请求后台数据的实例代码
2017/06/22 Javascript
jQuery封装placeholder效果实现方法,让低版本浏览器支持该效果
2017/07/08 jQuery
Vue前端开发规范整理(推荐)
2018/04/23 Javascript
详解React之父子组件传递和其它一些要点
2018/06/25 Javascript
小程序实现发表评论功能
2018/07/06 Javascript
让axios发送表单请求形式的键值对post数据的实例
2018/08/11 Javascript
React router动态加载组件之适配器模式的应用详解
2018/09/12 Javascript
实例分析编写vue组件方法
2019/02/12 Javascript
python读取Android permission文件
2013/11/01 Python
安装dbus-python的简要教程
2015/05/05 Python
Python基础教程之浅拷贝和深拷贝实例详解
2017/07/15 Python
微信跳一跳自动运行python脚本
2018/01/08 Python
将pip源更换到国内镜像的详细步骤
2019/04/07 Python
python3 小数位的四舍五入(用两种方法解决round 遇5不进)
2019/04/11 Python
大学应届毕业生个人求职信
2013/09/23 职场文书
高中生班主任评语
2014/04/25 职场文书
介绍信模板
2015/01/31 职场文书
英文诗歌翻译方法(赏析)
2019/08/16 职场文书
导游词之包公祠
2019/11/25 职场文书
go goroutine 怎样进行错误处理
2021/07/16 Golang