我今天在这里堆叠。我对api进行了axios调用。在成功响应时,我运行该函数,并根据接收到的数据在我的页面上绘制图表。
当我把所有的转换都留在方法中的时候,它工作得很好。
mounted() {
this.month = moment().month("June").format("YYYY-MM");
axios.get('/data/statistic2/'+this.month)
.then(response => {
this.set = response.data;
this.generateChart(response.data);
})
},
methods: {
generateChart(input) {
let data = [];
input.forEach(function(row) {
let item = {};
item.day = row.day;
let timeArray = [row.time1, row.time2,row.time3,row.time4,row.time5];
let result = timeArray.filter(function(item) {
return item !== null;
}).reduce((prev, current) => parseInt(prev) + parseInt(current));
item.time = result;
data.push(item);
})
this.datachart = data;
},但是当我试图用不同的方法封装这一点逻辑时
mounted() {
this.month = moment().month("June").format("YYYY-MM");
axios.get('/data/statistic2/'+this.month)
.then(response => {
this.set = response.data;
this.generateChart(response.data);
})
},
methods: {
generateChart(input) {
let data = [];
input.forEach(function(row) {
let item = {};
item.day = row.day;
item.time = convertTimeFromDB(row);
data.push(item);
})
this.datachart = data;
},
convertTimeFromDB(row) {
let timeArray = [row.time1, row.time2,row.time3,row.time4,row.time5];
return timeArray.filter(function(item) {
return item !== null;
}).reduce((prev, current) => parseInt(prev) + parseInt(current));
},我得到了“未明确(承诺) ReferenceError: convertTimeFromDB未定义”
发布于 2020-02-25 12:12:56
您应该将convertTimeFromDB(row)更改为this.convertTimeFromDB(row),并将function(row) {}更改为箭头函数(row => {}):
generateChart(input) {
let data = [];
input.forEach((row) => {
let item = {};
item.day = row.day;
item.time = this.convertTimeFromDB(row);
data.push(item);
})
this.datachart = data;
},发布于 2020-02-25 12:11:18
这与承诺无关。
convertTimeFromDB是methods对象的属性。它不是一个变量(范围内或其他方面)。
您必须在对象的上下文中引用它(例如,whatever.methods.convertTimeFromDB)
https://stackoverflow.com/questions/60394280
复制相似问题