BackboneJS View - Uncaught TypeError: Cannot read property 'get' of undefined
BackboneJS View - Uncaught TypeError: Cannot read property 'get' of undefined
我有以下 Backbone 具有渲染功能的视图,如下所示:
render: function () {
this.emptyContent();
if (this.model.get('ChatsInQueue') == -1) {
this.model.set('ChatsInQueue', '-');
}
this.$el.append(this.template({ Stats: this.model.toJSON(), Prior: this.model.get('PriorDayStats') }));
var self = this;
this.graphView.model.fetch({
success: function () {
self.graphView.render(this.model.get("TotalCalls"), this.model.get("CallsAbandoned"));
}
});
this.tickerTapeText();
$(window).trigger('resize');
但是,当我 运行 应用程序时,我收到以下控制台错误:
Uncaught TypeError: Cannot read property 'get' of undefined
at success
有人可以帮我诊断我的成功功能需要更改哪些内容才能定义 'get' 吗?
JavaScript 的 function
绑定了它自己的 this
,这与创建它的上下文的 this
不同。在 ES6 中,arrow functions作为不绑定自己的函数的替代方法引入 this
(除其他外,请参阅 MDN 网络文档)。
您已经通过声明变量 self
并将 this
分配给它并将其用于 self.graphView.render
调用来解决这个问题。但是,在参数中,您仍然使用 this
而不是 self
。在那里也使用 self
,或者如果您的环境实现了箭头函数,则更好地使用它们。 Current browsers should already support them.
我有以下 Backbone 具有渲染功能的视图,如下所示:
render: function () {
this.emptyContent();
if (this.model.get('ChatsInQueue') == -1) {
this.model.set('ChatsInQueue', '-');
}
this.$el.append(this.template({ Stats: this.model.toJSON(), Prior: this.model.get('PriorDayStats') }));
var self = this;
this.graphView.model.fetch({
success: function () {
self.graphView.render(this.model.get("TotalCalls"), this.model.get("CallsAbandoned"));
}
});
this.tickerTapeText();
$(window).trigger('resize');
但是,当我 运行 应用程序时,我收到以下控制台错误:
Uncaught TypeError: Cannot read property 'get' of undefined
at success
有人可以帮我诊断我的成功功能需要更改哪些内容才能定义 'get' 吗?
JavaScript 的 function
绑定了它自己的 this
,这与创建它的上下文的 this
不同。在 ES6 中,arrow functions作为不绑定自己的函数的替代方法引入 this
(除其他外,请参阅 MDN 网络文档)。
您已经通过声明变量 self
并将 this
分配给它并将其用于 self.graphView.render
调用来解决这个问题。但是,在参数中,您仍然使用 this
而不是 self
。在那里也使用 self
,或者如果您的环境实现了箭头函数,则更好地使用它们。 Current browsers should already support them.