我的问题是,我有一个网格,它可以选择创建一个新行。此操作向后端发送ajax请求,将新行插入到数据库中。完成后,它将MAX索引(最近添加的索引)返回到我的前端。我想使用这个索引作为ASSERTION_ID中的值,所以我需要等待ajax请求完成,然后用创建的索引更新网格。
问题是,当我使用一个The ()时。那么()或者仅仅是将数据传递给我的newRow的成功回调,然后this.state.rows和this.setState的.this部分指出了“错误”。因此,您如何确保任务已经完成,同时仍然坚持同样的任务。推荐信?
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
})
);
}发布于 2016-08-17 16:34:59
你必须保存一个参考资料。
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
});
});
},https://stackoverflow.com/questions/39001925
复制相似问题