oak-general-business/lib/miniprogram_npm/lin-ui/custom-tab-bar/index.js

121 lines
2.1 KiB
JavaScript

Component({
properties: {
position: {
type: String,
value: 'bottom'
},
show: {
type: Boolean,
value: true
},
selected: {
type: Number,
value: 0
},
color: {
type: String,
value: '#707070'
},
selectedColor: {
type: String,
value: '3963BC'
},
borderStyle: {
type: String,
value: '#f6f6f6'
},
backgroundColor: {
type: String,
value: '#fff'
},
backgroundImg: {
type: String,
value: ''
},
fontSize: {
type: Number,
value: 24
},
isRedirectToTab: {
type: Boolean,
value: true
},
// 是否跳转
isNav: {
type: Boolean,
value: true
},
list: {
type: Array,
value: []
}
},
data: {},
attached() {},
methods: {
switchTab(e) {
const data = e.currentTarget.dataset;
const url = data.path;
if (this.data.isNav) {
if (this.data.isRedirectToTab) {
wx.switchTab({
url
});
} else {
wx.switchTab({
url
});
}
}
this.showItem(data.index);
},
show() {
this.setData({
show: true
});
},
hide() {
this.setData({
show: false
});
},
showItem(idx) {
this.setData({
selected: idx
});
let detail = {
idx,
path:this.route
};
let option = { bubbles: true, composed: true };
this.triggerEvent('lintap', detail, option);
},
showRedDot(idx) {
const redDot = `list[${idx}].redDot`;
this.setData({
[redDot]: true
});
},
hideRedDot(idx) {
const redDot = `list[${idx}].redDot`;
this.setData({
[redDot]: false
});
},
setTabBarBadge(idx, text) {
const badge = `list[${idx}].badge`;
this.setData({
[badge]: text
});
},
removeTabBarBadge(idx) {
const badge = `list[${idx}].badge`;
this.setData({
[badge]: ''
});
}
}
});