这是列表页的结构。点击右上+号后出现下图。
变更频道界面
现在的问题是,删除了比如说推荐之后,列表页的导航就会出现问题,设置的是当前数组第一项为激活的频道(删除推荐后的第一项应该是热点),结果直接蹦到第二项了(也就是本地),而且点击后都会后移一位,比如点击本地,会蹦到社会。实在是想不出原因。
Page({
/**
* 页面的初始数据
*/
data: {
isShowPinDao: false,
content_height:100,
channels:[
{ name: '推荐', id: 'tuijian', data: [] },
{ name: '热点', id: 'redian', data: [] },
{ name: '本地', id: 'bendi', data: [] },
{ name: '社会', id: 'shehui', data: [] },
{ name: '娱乐', id: 'yule', data: [] },
{ name: '军事', id: 'junshi', data: [] },
{ name: '科技', id: 'keji', data: [] },
{ name: '汽车', id: 'qiche', data: [] }
],
activeChannel:'tuijian',
otherChannels:[
{ name: '亲子', id: 'qinzi', data: [] },
{ name: '女人', id: 'nvren', data: [] },
{ name: '星座', id: 'xingzuo', data: [] },
{ name: '情感', id: 'qinggan', data: [] },
{ name: '修仙', id: 'xiuxian', data: [] },
{ name: '都市', id: 'dushi', data: [] },
{ name: '美食', id: 'meishi', data: [] },
{ name: '热剧', id: 'reju', data: [] },
{ name: '小说', id: 'xiaoshuo', data: [] },
]
},
//点击切换频道
clickChangeChannel: function (e) {
//获取当前频道id
var id = e.currentTarget.dataset.id;
this.setData({ 'activeChannel': id })
//判断当前频道有无数据
var index = e.currentTarget.dataset.index;
//接收this指向
var that = this;
var key = 'channels[' + index + '].data';
if(this.data.channels[index].data.length == 0){
//无数据则去请求接口
wx.request({
url: 'https://c.m.163.com/nc/article/headline/data/10-20.html?from=toutiao&passport=&devId=OPdeGFsVSojY0ILFe6009pLR%2FMsg7TLJv5TjaQQ6Hpjxd%2BaWU4dx4OOCg2vE3noj&size=20&version=5.5.3&spever=false&net=wifi&lat=&lon=&ts=1456985878&sign=oDwq9mBweKUtUuiS%2FPvB015PyTDKHSxuyuVq2076XQB48ErR02zJ6%2FKXOnxX046I&encryption=1&canal=appstore',
success(res) {
that.setData({ [key]: res.data.data })
}
})
}
//遮罩层点击移除频道
clickRemoveChannel:function(e){
var index = e.currentTarget.dataset.index;
//把我的频道中移除的放入其他频道
var removeItem = this.data.channels[index];
this.data.otherChannels.push(removeItem);
this.setData({ otherChannels: this.data.otherChannels});
//把我的频道中的删除
this.data.channels.splice(index, 1);
this.setData({ channels: this.data.channels});
//设置改变后的数组第一项为激活频道
var id = this.data.channels[0].id;
console.log(id);
this.setData({activeChannel:id});
},