笔者初入微信小程序,本博客纯属分享一些笔者在学习过程中遇到的一些问题和解决方法。由于是初入门,用到的方法可能不是很高效,也请大佬们指教
笔者在开发小程序的时候,想要实现这样一个功能:用wx:for渲染出4张图片,点击每张图片都会跳转至同一个页面,页面里的内容则是根据点击的相关图片进行加载。
乍一看,觉得有点难搞,这个问题困扰了笔者挺久的,可能也是由于经验不足。之后翻阅资料以及综合网上的方案,笔者终于解决了这个问题:)
下面我用开发的一个小片段进行举例:
Navigate.wxml
//Navigate.wxml
<view class='schools'>
<block wx:for="{{schoolList}}" wx:key="index">
<view class='schoolview' catchtap='gotoschooldetail' data-id="{{item.id}}">
<image class="schoolimg" src="{{item.pic}}" mode="scaleToFill"></image>
</view>
</block>
</view>
Navigate.wxss
//wxss
.schools{
position:relative;
display: flex;
flex-direction: row;
flex-wrap: wrap;
}
.schoolview{
position:relative;
width:45%;
height:14rem;
left: 10px;
padding: 5px;
}
.schoolimg{
width:100%;
height:80%;
}
Navigate.js
//js
Page({
data: {
schoolList: [{
"id": 1,
"pic": "../../images/xdf-logo.jpg",
},
{
"id": 2,
"pic": "../../images/xwg-logo.jpg",
},
{
"id": 3,
"pic": "../../images/hqys-logo.png",
},
{
"id": 4,
"pic": "../../images/ppys-logo.jpg",
}
],
},
/**
* 打开学校详情页面
*/
gotoschooldetail: function(e) {
var that = this;
let schoolid = e.currentTarget.dataset.id; //获取index值
console.log(schoolid);
wx.navigateTo({
url: '../schools/schools?schoolid=' + schoolid
});
},
})
界面只是为了举例,所以没有做什么调整,渲染出的页面效果图如下所示:
//schools.wxml
<view>
{{schoolInfo.school_name}}
</view>
schools.wxss
这个垃圾界面并没有wxss :)
schools.js
//schools.js
var app = getApp();
Page({
data: {
schoolid: 0,
schoolInfo: [],
schoolInfo1: [
{
"school_name": "新东方",
},
{
"school_name": "学为贵",
},
{
"school_name": "环球雅思",
},
{
"school_name": "趴趴雅思",
}
]
},
onLoad: function (options) {
var that = this;
this.setData({
schoolid: options.schoolid
})
},
onReady: function () {
var that = this;
let sid = this.data.schoolid;
let sinfo;
console.log("学校id:" + sid);
//这里根据学校id的不同,去绑定不同的数据到页面
if (sid == 1) {
sinfo = this.data.schoolInfo1[0];
}
if (sid == 2) {
sinfo = this.data.schoolInfo1[1];
}
if (sid == 3) {
sinfo = this.data.schoolInfo1[2];
}
if (sid == 4) {
sinfo = this.data.schoolInfo1[3];
}
console.log(sinfo);
this.setData({
schoolInfo: sinfo
})
},
})
演示效果如图所示:
点击新东方
总结一下就是:用wx:for渲染元素或组件时,需要给其定义一个下标值,每个元素或组件有了下标值之后,开发者就可以通过下标志找到那个元素或组件,单独对其进行操作。(ps.笔者就是因为没有注意到下标问题,所以当时苦恼了半天)
代码已经全部贴上去了,因为不怎么复杂所以就不附上源码了,应该都可以运行的。
切记:创建新的页面时,一定要记得在app.json文件里加上"pages/xxx/xxx",不然会报错的 :)