javascript - antdesign底层弹出个confirmModal。怎么获取底层的this?

查看:929
本文介绍了javascript - antdesign底层弹出个confirmModal。怎么获取底层的this?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

showConfirm() {//弹出确认对话框
        confirm({
            title: '当前总计应收金额为'+this.state.allReceivablePrice+'元',//这里能得到值!!!!
            // content: 'some descriptions',
            okText: '确认回款',
            cancelText: '取消',
            onOk() {
                const {allSelectOrder}=this.state;
                if (allSelectOrder.length==0){
                    message.error('订单Id不能为空');
                    return;
                }else {
                    this.setState({loading: true});
                    $.ajax({
                        url: API.flow,
                        type: 'post',
                        dataType: 'json',
                        data: JSON.stringify(allSelectOrder),
                        contentType: 'application/json;charset=UTF-8',
                        success: ()=> {
                            this.setState({
                                loading: false,
                            });
                            message.success('添加收款记录成功!');
                            this.refreshData();
                        },
                        error: (data)=> {
                            Modal.error({
                                title: data.responseJSON.msg
                            });
                            this.setState({ loading: false });
                        }
                    })
                }
            },
            onCancel() {

            },
        });
    },

这个this我怎么获取不到呢,都加了bind了
报错:

PaymentCollection.jsx:329 Uncaught TypeError: Cannot read property 'state' of undefined

解决方案

你ajax的success和error都没有bind。注意看报错信息的位置。

showConfirm() {//弹出确认对话框
    confirm({
        title: '当前总计应收金额为'+this.state.allReceivablePrice+'元',//这里能得到值!!!!
        // content: 'some descriptions',
        okText: '确认回款',
        cancelText: '取消',
        onOk: () => {
            const {allSelectOrder}=this.state;
            if (allSelectOrder.length==0){
                message.error('订单Id不能为空');
                return;
            }else {
                this.setState({loading: true});
                $.ajax({
                    url: API.flow,
                    type: 'post',
                    dataType: 'json',
                    data: JSON.stringify(allSelectOrder),
                    contentType: 'application/json;charset=UTF-8',
                    success: ()=> {
                        this.setState({
                            loading: false,
                        });
                        message.success('添加收款记录成功!');
                        this.refreshData();
                    },
                    error: (data)=> {
                        Modal.error({
                            title: data.responseJSON.msg
                        });
                        this.setState({ loading: false });
                    }
                })
            }
        },
        onCancel() {

        },
    });
},

准确来说是onOk函数的this环境已经丢失了。;

这篇关于javascript - antdesign底层弹出个confirmModal。怎么获取底层的this?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆