官网:https://mp.weixin.qq.com/debug/wxadoc/dev/framework/view/wxml/
.wxml文件中
<view wx:for="{{array}}">{{item}}view>
如果没有写wx:key,这会报警告Now you can provide attr “wx:key” for a “wx:for” to improve performance.
- wx:key 的值以两种形式提供 :
wx:key
,会报一个 warning, 如果明确知道该列表是静态,或者不必关注其顺序,可以选择忽略。注意区分:
- 在组件上使用wx:for控制属性绑定一个数组,即可使用数组中各项的数据重复渲染该组件。wx:for和wx:for-items作用一样
- 默认数组的当前的下标变量名默认为index,数组当前项的变量名默认为item。
- 使用wx:for-item 可以指定数组当前元素的变量名。起别名,默认是 item。使用wx:for-index 可以指定数组当前下标的变量名
- wx:key 如果列表中项目的位置会动态改变或有新的项目添加到列表中,并且希望列表中的项目保持自己的特征和状态(如 中的输入内容, 的选中状态),需要使用 wx:key 来指定列表中项目的唯一的标识符。
<view wx:if="{{logged}}">登录view>
<view wx:else>未登录view>
这里需要注意一下:如果好几个判断中间是 elif
wx:if,wx:elif,wx:else
。 <template name="staffName">
<view>
FirstName: {{firstName}}, LastName: {{lastName}}
view>
template>
<template is="staffName" data="{{...staffA}}">template>
<template is="staffName" data="{{...staffB}}">template>
<template is="staffName" data="{{...staffC}}">template>
例子2
<template name="odd" data="{{item}}">
<view>{{item}} is odd view>
template>
<template name="even" data="{{item}}">
<view>{{item}} is even view>
template>
<block wx:for="{{[1, 2, 3, 4, 5]}}" wx:for-item="item">
<template is="{{item % 2 == 0 ? 'even' : 'odd'}}" data="{{item}}"/>
block>
<view bindtap="push">跳转页面view>
.js 文件中
Page({
data: {
logged: false,
message:'Hello Mina!',
array:[1,2,3,4,5,6],
staffA: { firstName: 'Hulk', lastName: 'Hu' },
staffB: { firstName: 'Shang', lastName: 'You' },
staffC: { firstName: 'Gideon', lastName: 'Lin' }
},
push:function(){
wx.navigateTo({
url: '../userInfo/userInfo',
})
}
如果要在index.wxml 里面要引用 demo.wxml 中定义的模板,则需要引入 demo.wxml文件
<import src="demo.wxml"/>
这里需要注意的是import的作用域:只会import目标文件中定义的template,而不会import目标文件import的template。和 iOS 中的 import 不一样,不能继承。
include
include可以将目标文件除了的整个代码引入,相当于是拷贝到include位置
以倒计时天数为例:
首先在 js 文件的 data 中定义
data: {
time_high: ‘2018-06-06’
}
倒计时方法
// 倒计时
count_down: function () {
var that = this;
setInterval(function () {
var curDate = util.formatTime(new Date);
console.log("curDate-----------", curDate);
var time_high = util.formatTime(new Date(that.data.time_high));
console.log(time_high);
// 两个时间相差的秒数
var seconds = (Date.parse(time_high) - Date.parse(curDate)) / 1000;
var days = seconds / (3600 * 24);
var hours = parseInt((seconds - parseInt(days) * 3600 * 24) / 3600);
var minutes = parseInt((seconds - parseInt(days) * 3600 * 24 - parseInt(hours) * 3600) / 60);
var secs = parseInt((seconds - parseInt(days) * 3600 * 24 - parseInt(hours) * 3600 - parseInt(minutes) * 60))
console.log("secs:", secs);
if (hours.toString().length <= 1) {
hours = '0' + hours;
}
if (minutes.toString().length <= 1) {
minutes = '0' + minutes;
}
if (secs.toString().length <= 1) {
secs = '0' + seconds;
}
var timeString = hours + '小时' + minutes + '分' + secs + '秒'
days = parseInt(days);
that.setData({
days: days,
timeString: timeString
});
}.bind(this), 1000);
},
.wxs文件或者
cover类