访问主干模型中的父上下文
Accessing parent context within a backbone model
我有一个xhr setRequestHeader,它在Backbone.js中的模型上运行一个方法。当试图使用"this"引用模型的上下文时,它引用的是xhr请求,而不是模型。
在initialize中,我创建了一个名为self的变量,它引用了这个变量,但在sendAuth方法中返回了undefined。
我已经尝试了许多方法来引用sendAuth中的Authentication,但没有成功。如有任何帮助,我们将不胜感激。
var Authentication = Backbone.Model.extend({
initialize: function() {
var self = this;
self.token = Distillery.config.defaultToken;
},
setToken: function(token) {
self.token = token;
},
resetToken: function() {
self.token = Distillery.config.defaultToken;
},
sendAuth: function(xhr) {
xhr.setRequestHeader('Authorization', 'token ' +self.token);
}
});
var authentication = new Authentication;
$.ajaxSetup({
beforeSend: authentication.sendAuth
});
您不必在这里定义"self"(在您的代码中,"self’只适用于initialize方法)。
所以,把你的模型改成这样:
var Authentication = Backbone.Model.extend({
initialize: function() {
_.bindAll(this, 'sendAuth');
this.resetToken();
},
setToken: function(token) {
this.token = token;
},
resetToken: function() {
this.token = Distillery.config.defaultToken;
},
sendAuth: function(xhr) {
xhr.setRequestHeader('Authorization', 'token ' + this.token);
}
});
我相信,当您将该方法传递给ajaxSetup时,该方法的调用方不再是"authentication",而是$.ajax对象,这就是为什么this.token未定义的原因。在initialize中使用_.bindAll可以确保在调用sendAuth时,sendAuth中的"this"总是指骨干对象。
相关文章:
- 将函数的上下文应用于javascript变量
- 在VanillaJS中模拟模型双向数据绑定
- Twitter Bootstrap typeahead:使用“this”获取上下文/调用元素
- 使用JQuery的动态上下文菜单
- 为集合分配大量的模型弹药
- 如何使用backbone.js从集合中获取模型名称
- 如何访问UIWebView'的子窗口上下文
- 骨干模型默认值-todos.js示例中不必要的代码
- EmberJS中支持单字母单词模型
- 2个backbone.js集合,具有相同的模型,但排序顺序不同
- 将不在模型中的数据返回到mvc控制器
- 如何在视图模型contet更新更新上调用Jquery函数
- 如何使用Javascript客户端对象模型检索Sharepoint 2010列表项权限
- 我应该如何检查主干.主干.模型更改时查看
- Ext.js从json构建模型关系的问题
- 显示模块模式在Knockout中设置模型的新实例
- 使用导航属性创建Kendo UI网格模型的问题
- Angular,函数在(模型)工厂中返回值
- 访问主干模型中的父上下文
- 如何指定视图'使用多个视图模型时的数据绑定上下文