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


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 相关文章推荐
JQuery EasyUI 日期控件如何控制日期选择区间
May 05 Javascript
jQuery实现table隔行换色和鼠标经过变色的两种方法
Jun 15 Javascript
使用ngView配合AngularJS应用实现动画效果的方法
Jun 19 Javascript
javascript中错误使用var造成undefined
Mar 31 Javascript
js获取html的span标签的值方法(超简单)
Jul 26 Javascript
JavaScript中transform实现数字翻页效果
Mar 08 Javascript
Vue+axios 实现http拦截及路由拦截实例
Apr 25 Javascript
AngularJS动态添加数据并删除的实例
Feb 27 Javascript
React Router V4使用指南(精讲)
Sep 17 Javascript
微信小程序系列之自定义顶部导航功能
May 21 Javascript
JavaScript canvas绘制折线图
Feb 18 Javascript
Vue项目打包部署到apache服务器的方法步骤
Feb 01 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板块横排显示图片的实现方法
2007/05/28 PHP
php 静态页面中显示动态内容
2009/08/14 PHP
PHP中遇到的时区问题解决方法
2015/07/23 PHP
深入理解php printf() 输出格式化的字符串
2016/05/23 PHP
php版银联支付接口开发简明教程
2016/10/14 PHP
php类自动装载、链式操作、魔术方法实现代码
2017/07/23 PHP
jquery实现非叠加式的搜索框提示效果
2014/01/07 Javascript
jQuery表单美化插件jqTransform使用详解
2015/04/12 Javascript
angular实现图片懒加载实例代码
2017/06/08 Javascript
js学习总结_轮播图之渐隐渐现版(实例讲解)
2017/07/17 Javascript
解决vue router组件状态刷新消失的问题
2018/08/01 Javascript
微信小程序生成分享海报方法(附带二维码生成)
2019/03/29 Javascript
js实现点击图片在屏幕中间弹出放大效果
2019/09/11 Javascript
解决vue路由name同名,路由重复的问题
2020/08/05 Javascript
如何利用javascript接收json信息并进行处理
2020/08/06 Javascript
[02:20]2014DOTA2西雅图邀请赛 MVP外卡赛首胜采访
2014/07/09 DOTA
python计算最大优先级队列实例
2013/12/18 Python
Python深入学习之特殊方法与多范式
2014/08/31 Python
举例讲解Django中数据模型访问外键值的方法
2015/07/21 Python
Python导出DBF文件到Excel的方法
2015/07/25 Python
python argparser的具体使用
2019/11/10 Python
Python3 shelve对象持久存储原理详解
2020/03/23 Python
浅谈Selenium+Webdriver 常用的元素定位方式
2021/01/13 Python
HTML5实现视频直播功能思路详解
2017/11/16 HTML / CSS
html5的画布canvas——画出弧线、旋转的图形实例代码+效果图
2013/06/09 HTML / CSS
美国购买韩国护肤和美容产品网站:Althea Korea
2020/11/16 全球购物
应聘教师求职信
2014/07/19 职场文书
2014年单位法制宣传日活动总结
2014/11/01 职场文书
2014普法依法治理工作总结
2014/12/18 职场文书
交心谈心活动总结
2015/05/11 职场文书
2015中秋祝酒词
2015/08/12 职场文书
美德少年主要事迹材料
2015/11/04 职场文书
2016新年问候语大全
2015/11/11 职场文书
Python爬虫之爬取最新更新的小说网站
2021/05/06 Python
SQL注入的实现以及防范示例详解
2021/06/02 MySQL
Android在Sqlite3中的应用及多线程使用数据库的建议
2022/04/24 Java/Android