首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >发布VueJS中的承诺

发布VueJS中的承诺
EN

Stack Overflow用户
提问于 2020-02-25 12:07:07
回答 2查看 53关注 0票数 0

我今天在这里堆叠。我对api进行了axios调用。在成功响应时,我运行该函数,并根据接收到的数据在我的页面上绘制图表。

当我把所有的转换都留在方法中的时候,它工作得很好。

代码语言:javascript
复制
        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;
            },

但是当我试图用不同的方法封装这一点逻辑时

代码语言:javascript
复制
        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未定义”

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-25 12:12:56

您应该将convertTimeFromDB(row)更改为this.convertTimeFromDB(row),并将function(row) {}更改为箭头函数(row => {}):

代码语言:javascript
复制
generateChart(input) {
  let data = [];
  input.forEach((row) => {
    let item = {};
    item.day = row.day;                 
    item.time = this.convertTimeFromDB(row);
    data.push(item);    
  })
  this.datachart = data;
},
票数 1
EN

Stack Overflow用户

发布于 2020-02-25 12:11:18

这与承诺无关。

convertTimeFromDBmethods对象的属性。它不是一个变量(范围内或其他方面)。

您必须在对象的上下文中引用它(例如,whatever.methods.convertTimeFromDB)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60394280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档