如何在小程序中使用template

如何在小程序中使用template,第1张

一、定义模板

1、新建一个template文件夹用来管理项目中所有的模板;

2、新建一个courseList.wxml文件来定义模板;

3、使用name属性,作为模板的名字。然后在内定义代码片段。

注意:

a.可以看到一个.wxml文件中可以定义多个模板,只需要通过name来区分;

b.模板中的数据都是展开之后的属性。

<template name="courseLeft">

<navigator url="../play/play?courseUuid={{courseUuid}}&isCompany={{isCompany}}">

<view class="item mr26">

<image src="{{imagePath}}" mode="aspectFill"></image>

<view class="course-title">

<text class="title">{{courseName}}</text>

<text class="author">- {{teacherName}}</text>

</view>

<view class="course-info clearfix">

<view class="fl"><text class="play">{{playCount}}</text></view>

<view class="fr"><text class="grade">{{score}}</text></view>

</view>

<view wx:if="{{studyProgress}}" class="tip-completed">{{studyProgress}}</view>

</view>

</navigator></template><template name="courseRight">

<navigator url="../play/play?courseUuid={{courseUuid}}&isCompany={{isCompany}}">

<view class="item">

<image src="{{imagePath}}" mode="aspectFill"></image>

<view class="course-title">

<text class="title">{{courseName}}</text>

<text class="author">- {{teacherName}}</text>

</view>

<view class="course-info clearfix">

<text class="play fl">{{playCount}}</text>

<text class="grade fr">{{score}}</text>

</view>

<view wx:if="{{studyProgress}}" class="tip-completed">{{studyProgress}}</view>

</view>

</navigator></template>

二、使用模板

1、使用 is 属性,声明需要的使用的模板

<import src="../../templates/courseList.wxml"/>

2、将模板所需要的 data 传入,一般我们都会使用列表渲染。

<block wx:for="{{courseList}}">

<template is="{{index%2 === 0 ? 'courseLeft' : 'courseRight'}}" data="{{...item}}"></template></block>

注意:

a.可以通过表达式来确定使用哪个模板is="{{index%2 === 0 ? 'courseLeft' : 'courseRight'}}"

或者通过wx:if来确定。index是数组当前项的下标。

<template wx:if="{{index%2 === 0}}" is="courseLeft" data="{{...item}}"></template>

<template wx:else is="courseRight" data="{{...item}}"></template>

b. data 是要模板渲染的数据,data="{{...item}}" 写法是ES6的写法,item是wx:for当前项,... 是展开运算符,在模板中不需要再{{item.courseName}} 而是直接{{courseName}} 。

三、模板样式

1、在新建模板的时候同时新建一个courseList.wxss 的文件,与CSS同样的写法控制样式。

2、在需要使用模板的页面 .wxss文件中import进来;或者直接在app.wxss中引入,这样只需要一次引入,其他文件就不用引入了。

@import url("../template/courseList.wxss")

微信小程序 template

_大叔_

2020-04-14 20:43·字数:489·阅读:196

关于 template 的基本使用我这里就不说了,大家可看文档,传送门。

接下来要说的是关于 template 在使用的时候出现的一些问题。

一、template 的含义

template 就是模板的意思,只要我们刻画出来后不管在任何地方使用,他都是一个样子,但是在微信小程序里不完全是,微信小程序在 template 上有 data 属性,意思就是我们可以传数据进去,不管你是传样式,还是改变模板的内容都是可以的。

二、template 使用 wxs语法

我以为只有我一个人碰到了,但并不是,我们先看看类似碰到的人怎么说:

然而最屌的还是官方:

我也遇到了类似的问题在 template 使用 wxs 导致调用了多次(不止两次),我可不相信这是一个正常现象,执行多遍不浪费性能嘛?(真想不明白微信为什么不直接使用VUE算了,你自己封装也得让人用着没问题才是,装什么B)

emmmm...没办法,问题还是要解决的,自己在这瞎折腾也不可能一时半会就解决的,解决方式要么欺骗自己(调一次执行6遍,调两次执行12遍),要么不要封装 template,要么就是数据在得到的时候先处理掉,在传入 template,要么就是让后端帮忙处理掉。

三、template 中引用图片的路径问题

其实很简单,template中,如果有多处引用了 同一个模板,且模板在不同层级的目录中引用,模板中的图片会 500错误,简单意思就是找不到的呢。建议把图片放到公网环境。

与iOS开发很相似,小程序的导航栏也可以全局设置一下,在公共文件app.json中设置了导航栏相关样式如下:

这个地方是全局设置,如果想要在不同的页面设置各自的标题属性,只需要在该子级文件中设置

子页面想调用共公js的方法,需先在子页面js中先实例化app:具体过程如下

在需要调用的子页面中,

如果是嵌套循环,很容易出现多个list和index,例如表视图一样,所以在小程序中可以重命名 list 和index 方法为:wx:for-index='重命名' wx:for-list="重命名"

在APP开发中,UI复用是一个很好的手段,在小程序上就是模板template。

在逛小程序联盟的时候发现了一个大湿总结的比我好,搬过来一下。

微信小程序中,如果几个页面中需要引用同一个header/footer,当定义了公共模板时,有两种引用方法如下:

方法一:在公共模板中定义template元素,利用 方法 ,这种方式只会显示公共模板的template里面的内容,之外的内容不会显示

** 方法二:**

总结:import方式和imclude方式的不同在于前者仅引用公共模板中的template里面的内容后者仅引用template以外的内容,显而易见,include方式更简单一些,在wxml中只需要一句话即可。

rpx单位是微信小程序中css的尺寸单位,rpx可以根据屏幕宽度进行自适应。规定屏幕宽为750rpx。如在 iPhone6 上,屏幕宽度为375px,共有750个物理像素,则750rpx = 375px = 750物理像素,1rpx = 0.5px。

具体的 这里有一片文章介绍的很详细 , 还有这个

小程序的事件主要有:

小程序中的wxml中绑定事件有两种:以touchtab为例 ,在wxml中必须有bind/catch不然无法实现上述事件

bindtouchtab和catchtouchtab bind的不会阻止事件冒泡(元素最里层到最外层函数执行),catch会阻止冒泡,只是冒泡到当前层结束

如果想在元素执行某事件时把元素的某个属性传到后台 可在元素中加入data-属性名称=“xxx”,在事件函数中 function(event){}的event中的currentTarget里面的data-set里面可查看接收在元素中绑定的的id或者其他属性clientX/Y 查看滑动手指距离屏幕左侧的位置,查看滑动位置也可以通过touchstart和和touchend的clientx/y获取

看到几个别人写的,瞬间石化,果断收藏。

在小程序中,定义了一项工具文件utils,此文件的js旨在本文件之内有效,当其他子页面想调用其中的js方法或者变量时,需要两步骤:

1:在utils被调用的js文件中,面向对象的方式模型输出: module.exports={要调用的函数名称:要调用的函数名称 };

2:在要调用的js文件中模块化引入utils的js文件 var object=require("utils被调用的js文件地址"); 可以输出一下object就能看到被调用的方法了;

例子如下:

要调用的js文件:

小程序的后台获取数据方式get/post具体函数格式如下:wx.request({})

如果屏幕中某元素的内容超过此元素的高度,可设置元素为scroll-view 为滚动状态元素,这样可以做到元素固定高度且元素内容滚动屏幕不滚动的效果;

scroll-view标签的主要属性分为以下几种:

微信小程序广告轮播元素 图片所在元素/swiper-item>

其中属性有:

图片更改事件:bindchange='imgchange' imagechange()的e.detail.current为当前显示页面的下标值


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12106483.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存