无法识别 Backbone 路由器

0yg35tkg  于 2022-11-10  发布在  其他
关注(0)|答案(1)|浏览(141)

我正在尝试为 Backbone.js 创建一个路由器,我想用es6将其作为一个类来编写,所以我提出了以下测试:

class MyRouter extends Backbone.Router {
  constructor() {
    super(arguments);
  }

  routes = {
    "*path": "error"
  }

  error(path) {
    console.log("in myRouter error")
    this.trigger("component", {
      content: require("./error404/")(path)
    });
    return this.setRoute("error");
  }
}

module.exports = new MyRouter();

然而由于某种原因它不被 Backbone 网识别,所以问题是,我是不是遗漏了什么?我必须告诉 Backbone 网使用我的特定路由器吗?

4nkexdtk

4nkexdtk1#

结果发现这个错误很简单,你需要调用super with routes,即

class MyRouter extends Backbone.Router {
  constructor(options) {
    super({ routes: { "*path": "error" }, ...options });
  }

  initialize() {
    this.prev = undefined;
  }

  setRoute(route) {
    this.prev = route;
  }

  error(path) {
    this.trigger("component", {
      content: require("./error404/")(path)
    });
    return this.setRoute("error");
  }
}

let router = new MyRouter();
module.exports = router;

相关问题