这里面的值 formatter 应该 怎么动态的 传入进去? 有大佬知道吗?
Page({
data: {
formatter(day) {
const month = day.date.getMonth() + 1;
const date = day.date.getDate();
if (month === 5) {
if (date === 1) {
day.topInfo = '劳动节';
} else if (date === 4) {
day.topInfo = '五四青年节';
} else if (date === 11) {
day.text = '今天';
}
}
if (day.type === 'start') {
day.bottomInfo = '入住';
} else if (day.type === 'end') {
day.bottomInfo = '离店';
}
return day;
},
},
});
改什么底层代码啊。。只需要 任意调用接口的地方 this.setData 方法,把 formatter重新赋值就可以了。。。 this.setData({ formatter: function (day) { 你要写的bug } )}
这个问题貌似uniapp里面有大问题 直接用this获取不到 但是获取当前页面栈的data就能拿到了 真的奇葩
data: {
formatter:function(day) {
//此地方注意一下 请求接口格式化数据时,处理请求一次
return day;
}
},
/**
* 获取当月的签到数据
*/
getMonthSignInData(){
const _this = this
network.getRequestLoading(config.getMonthSignInData,{year:_this.data.cur_year,month:_this.data.cur_month}, "正在获取签到数据...",
function (res) {
_this.setData({
signInList:res,
// 签到状态格式化
formatter: function(day){
//...数据处理
if(day.date<=new Date()){
if (_this.equalOneDay(day.date,new Date())){
day.text = '今天';
}else{
if (_this.getDaySignInStatus(day.date)) {
//已签到
day.topInfo = '●';
} else if (!_this.getDaySignInStatus(day.date)) {
//签到异常
day.bottomInfo = '●';
}
}
}
return day
}
})
},
“这里面的值 formatter 应该 怎么动态的 传入进去?”
说实话,你这句话就算有配图和代码,我还是不明白你在问什么?
如果你是想问formatter(day)这个函数的执行结果怎么反映到页面上的话。请参考下面的代码。
以后提问题请尽量说清楚,大家都节省时间。
另外,你的代码的写法有点奇怪, 为啥将函数formatter(day)直接定义到了 Page.data 下,多读下文档,了解下这个data是做什么用的。
js:
Page({ data: { formatStr: null }, onLoad: function() { let that = this let day = xxx this.setData({ formatStr: that.formatter(day) }) }, formatter: function(day) { ... return day } })
wxml:
<view>{{formatStr}}</view>
Page({
data: {
show: false,
minDate: null,
maxDate: null,
},
onLoad: function() {
let that = this
// 调用接口从数据库获取日期范围
const {startDate, endDate} = xxx
that.setData({
minDate: startDate,
maxDate: endDate
})
},
});
<van-calendar
show="{{ show }}"
min-date="{{ minDate }}"
max-date="{{ maxDate }}"
/>
比如它是这样的: ['0501': '自定义文案', '0601': 'XXX', ...]
然后在formatter里面判断日期和返回的key值是否匹配,匹配的话就用自定义文案。