Dig*_*lWM 3 javascript backbone.js underscore.js
我有以下情况:
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");
}
});
}
});
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我收到以下错误
this.trigger不是一个功能
在外部方法上,我可以触发东西......就像
var task = new Task();
task.trigger("something","payload");
Run Code Online (Sandbox Code Playgroud)
我做错了什么?还是不做:)
sti*_*man 12
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");
}
});
}
Run Code Online (Sandbox Code Playgroud)
编辑:查看"这个"如何确定的解释.
我个人更喜欢saveSuccess在模型上使用方法.
save: function() {
var self = this;
$.ajax({
type : "POST",
url : "/api/savetask",
data : this.toJSON(),
success : this.saveSuccess
});
},
saveSuccess: function(response) {
this.trigger("something", "payload");
}
Run Code Online (Sandbox Code Playgroud)