我有一个AJAX调用,我在URL调用中使用绑定到this
的变量。我在回调中也需要这个。
最初我使用var _that = this
模式,但是没有通过代码审查。我投入了context: this
,但不确定它是否适用于第二个链接,我需要实际访问它,或者它是否仅在回调中可用。
访问this
参数中使用的url
上下文变量以及回调的最简洁方法是什么?
$.ajax({
url: "/search/".concat(_this.options.modelId),
contentType: "application/json; charset=utf-8",
dataType: "json",
type: 'PUT',
data: JSON.stringify(templatePerms),
context: this,
success: function(data) {
this.message('Success!', 'Updated', 'success');
this.cleanup();
}
});
答案 0 :(得分:0)
不是创建额外的变量(例如_this
),而是使用Function.bind()作为thisArg
传递this
:
success: function(data) {
this.message('Success!', 'Updated', 'success');
this.cleanup();
}.bind(this)
答案 1 :(得分:0)
class Test {
constructor() {
this.options = {};
this.options.modelId = '1';
this.doIt();
}
doIt() {
$.ajax({
url: 'https://jsonplaceholder.typicode.com/posts/' + this.options.modelId,
contentType: "application/json; charset=utf-8",
dataType: "json",
type: 'PUT'
})
.then(data=>this.success.call(this, data));
}
success(data) {
this.message(data);
}
message(msg) {
alert(msg.id);
}
}
new Test();
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>