javascript - 主干在获取时丢失上下文

标签 javascript backbone.js backbone-events backbone.js-collections

我有一个带有自定义获取函数和 onFetchSuccess 函数的集合。

onFetchSuccess 函数需要触发一些其他事件,因此它调用 this.trigger,这就是它变得棘手的地方。 由于找不到 triggerthis 的上下文似乎丢失了。

  fetch(options = {}) {
    console.log("fetching");
    this.trigger(this.FETCH_START);
    options.success = this.onFetchSuccess;
    options.url = this.url;
    Backbone.Collection.prototype.fetch.call(this, options);
    console.log("fetched");
  }
  onFetchSuccess(model, response, options) {
    console.log("success!")
    this.trigger("change");
  }

它只会导致Uncaught TypeError: this.trigger is not a function

我错过了什么吗?从其他答案(针对不同的问题)来看,这似乎是扩展 fetch 函数的正确方法

最佳答案

您需要将 onFetchSuccess 更改为 arrow function .

与常规函数不同,箭头函数没有自己的上下文。这意味着箭头函数的 this 是定义该函数的上下文的 this,而常规函数有自己的 this

如果您使用的是常规函数定义,则 this.triggerthis 实际上是函数的 this,没有trigger 方法。

如果您使用箭头函数,this 将是包含您所期望的 trigger 方法的函数。

关于javascript - 主干在获取时丢失上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57390040/

相关文章:

javascript - 页面中插入后需要运行的Backbone View相关代码放在什么位置

javascript - 点击聆听新创建的模型?

javascript - 如何在将 Backbone View 插入 DOM 时指定方法回调?

javascript - 主干监听集合上的更改事件

javascript - 如何在 asp.net 文档的末尾而不是在 ScriptManager 中注册 js 文件

javascript - 无法设置未定义的属性 'new_form'

javascript - ReactJS、CSS 和 SVG 动画,以及重新渲染

javascript - 如何防止 Backbone 应用程序中自定义事件的事件冒泡?

javascript - 内联 Javascript block 未初始化

javascript - 模块化网页设计