首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >持之以恒。参考文献

持之以恒。参考文献
EN

Stack Overflow用户
提问于 2016-08-17 16:31:54
回答 1查看 43关注 0票数 1

我的问题是,我有一个网格,它可以选择创建一个新行。此操作向后端发送ajax请求,将新行插入到数据库中。完成后,它将MAX索引(最近添加的索引)返回到我的前端。我想使用这个索引作为ASSERTION_ID中的值,所以我需要等待ajax请求完成,然后用创建的索引更新网格。

问题是,当我使用一个The ()时。那么()或者仅仅是将数据传递给我的newRow的成功回调,然后this.state.rows和this.setState的.this部分指出了“错误”。因此,您如何确保任务已经完成,同时仍然坚持同样的任务。推荐信?

代码语言:javascript
复制
            handleAddRow: function(e) {
                var newAssertionID;
                $.when($.ajax({
                    url: root + port + "/insertannotation",
                    type: 'post',
                    success: function(data) {
                        newAssertionID = data.assertionID.rows[0][0]

                    }
                })).then(function(data) {
                    var newRow = {
                        ASSERTION_ID: newAssertionID
                    };
                    var rows = React.addons.update(this.state.rows, { $push: [newRow] });
                    this.setState({ rows: rows });
                });

            },
            render: function() {
                return (
                    React.createElement(ReactDataGrid, {
                        contextMenu: React.createElement(MyContextMenu, {
                            onRowDelete: this.deleteRow
                        }),
                        enableCellSelect: true,
                        onGridSort: this.handleGridSort,
                        columns: columns,
                        rowGetter: this.rowGetter,
                        rowsCount: this.getSize(),
                        minHeight: 500,
                        onRowUpdated: this.handleRowUpdated,
                        toolbar: React.createElement(Toolbar, {
                            enableFilter: true,
                            onAddRow: this.handleAddRow
                        }),
                        onAddFilter: this.handleFilterChange
                    })
                );
            }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-17 16:34:59

你必须保存一个参考资料。

代码语言:javascript
复制
handleAddRow: function(e) {
    var that = this; // note this
    var newAssertionID;
    $.when($.ajax({
        url: root + port + "/insertannotation",
        type: 'post',
        success: function(data) {
            newAssertionID = data.assertionID.rows[0][0]

        }
    })).then(function(data) {
        var newRow = {
            ASSERTION_ID: newAssertionID
        };
        var rows = React.addons.update(that.state.rows, {
            $push: [newRow]
        });
        that.setState({
            rows: rows
        });
    });

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

https://stackoverflow.com/questions/39001925

复制
相关文章

相似问题

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