我有以下情况:
var Task = Backbone.Model.extend({
initialize: function() {
},
save: function() {
$.ajax({
type : "POST",
url : "/api/savetask",
data : this.toJSON(),
success : function (response) {
this.trigger("something", "payload");
}
});
}
});
当我运行它时,出现以下错误
this.trigger
is not a function
在外部方法上,我可以触发一些东西......比如
var task = new Task();
task.trigger("something","payload");
我做错了什么?或者不做 :)
最佳答案
匿名函数中的
this
指的是ajax对象。这是因为 javascript 中的“this”会根据函数的范围发生变化。为了引用初始函数的“this”,将其分配给不同的变量。以下将起作用:
save: function() {
var self = this;
$.ajax({
type : "POST",
url : "/api/savetask",
data : this.toJSON(),
success : function (response) {
self.trigger("something", "payload");
}
});
}
编辑:参见an explanation “这个”是如何确定的。
关于javascript - Backbone 模型如何从 Ajax 结果触发事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10030101/