Javascript 佩斯和恩伯,我如何使它在所有路线工作,而不重复代码

Javascript 佩斯和恩伯,我如何使它在所有路线工作,而不重复代码,javascript,ember.js,Javascript,Ember.js,我正在使用带有速度加载功能的ember 速度: 在我的代码中,我在每条路线中重复此操作,以便显示加载栏: App.IndexRoute = Ember.Route.extend({ activate: function() { this._super(); return Pace.restart(); }, deactivate: function() { this._super(); return Pace.stop(); } }); App.

我正在使用带有速度加载功能的ember

速度:

在我的代码中,我在每条路线中重复此操作,以便显示加载栏:

App.IndexRoute = Ember.Route.extend({
  activate: function() {
    this._super();
    return Pace.restart();
  },
  deactivate: function() {
    this._super();
    return Pace.stop();
  }
});

App.AboutRoute = Ember.Route.extend({
    activate: function() {
    this._super();
    return Pace.restart();
  },
  deactivate: function() {
    this._super();
    return Pace.stop();
  }
});

有没有办法不在每条路线上重复代码?谢谢

您可以通过执行以下操作覆盖所有路由:

Ember.Route.reopen({
  activatePace: function() {
    return Pace.restart();
  }.on('activate'),
  deactivatePace: function() {
    return Pace.stop();
  }.on('deactivate')
});
此外,这不会干扰现有的
激活/停用
挂钩,因此您不必调用
this.\u super()


请参阅有关重新打开的文档

您可以通过执行以下操作覆盖所有路由:

Ember.Route.reopen({
  activatePace: function() {
    return Pace.restart();
  }.on('activate'),
  deactivatePace: function() {
    return Pace.stop();
  }.on('deactivate')
});
此外,这不会干扰现有的
激活/停用
挂钩,因此您不必调用
this.\u super()


请参阅有关重新打开的文档

您可以通过执行以下操作覆盖所有路由:

Ember.Route.reopen({
  activatePace: function() {
    return Pace.restart();
  }.on('activate'),
  deactivatePace: function() {
    return Pace.stop();
  }.on('deactivate')
});
此外,这不会干扰现有的
激活/停用
挂钩,因此您不必调用
this.\u super()


请参阅有关重新打开的文档

您可以通过执行以下操作覆盖所有路由:

Ember.Route.reopen({
  activatePace: function() {
    return Pace.restart();
  }.on('activate'),
  deactivatePace: function() {
    return Pace.stop();
  }.on('deactivate')
});
此外,这不会干扰现有的
激活/停用
挂钩,因此您不必调用
this.\u super()


请参阅有关重新打开的文档

,我建议您创建或使用Ember的加载路径

因此,在您的情况下,Mixin的工作原理如下:

App.PaceLoader = Ember.Route.extend({
  activate: function() {
    this._super();
    return Pace.restart();
  },
  deactivate: function() {
    this._super();
    return Pace.stop();
  }
});
然后只需将其包含在您希望其工作的每条路线中:

App.AboutRoute = Ember.Route.extend(App.PaceLoader, {
  //the rest of your route code here...
});
我以前没有使用过Pace,但您可以将它添加到Ember不太明显的装载路线中(我不相信他们已经记录了它…),这在每个转换中都会用到:

App.LoadingRoute = Ember.Route.extend({
  activate: function() {
    this._super();
    return Pace.restart();
  },
  deactivate: function() {
    this._super();
    return Pace.stop();
  }
});

如果这样做有效,您就不必将其包括在任何其他路线中。:)

我建议创建一个或利用Ember的装载路线

因此,在您的情况下,Mixin的工作原理如下:

App.PaceLoader = Ember.Route.extend({
  activate: function() {
    this._super();
    return Pace.restart();
  },
  deactivate: function() {
    this._super();
    return Pace.stop();
  }
});
然后只需将其包含在您希望其工作的每条路线中:

App.AboutRoute = Ember.Route.extend(App.PaceLoader, {
  //the rest of your route code here...
});
我以前没有使用过Pace,但您可以将它添加到Ember不太明显的装载路线中(我不相信他们已经记录了它…),这在每个转换中都会用到:

App.LoadingRoute = Ember.Route.extend({
  activate: function() {
    this._super();
    return Pace.restart();
  },
  deactivate: function() {
    this._super();
    return Pace.stop();
  }
});

如果这样做有效,您就不必将其包括在任何其他路线中。:)

我建议创建一个或利用Ember的装载路线

因此,在您的情况下,Mixin的工作原理如下:

App.PaceLoader = Ember.Route.extend({
  activate: function() {
    this._super();
    return Pace.restart();
  },
  deactivate: function() {
    this._super();
    return Pace.stop();
  }
});
然后只需将其包含在您希望其工作的每条路线中:

App.AboutRoute = Ember.Route.extend(App.PaceLoader, {
  //the rest of your route code here...
});
我以前没有使用过Pace,但您可以将它添加到Ember不太明显的装载路线中(我不相信他们已经记录了它…),这在每个转换中都会用到:

App.LoadingRoute = Ember.Route.extend({
  activate: function() {
    this._super();
    return Pace.restart();
  },
  deactivate: function() {
    this._super();
    return Pace.stop();
  }
});

如果这样做有效,您就不必将其包括在任何其他路线中。:)

我建议创建一个或利用Ember的装载路线

因此,在您的情况下,Mixin的工作原理如下:

App.PaceLoader = Ember.Route.extend({
  activate: function() {
    this._super();
    return Pace.restart();
  },
  deactivate: function() {
    this._super();
    return Pace.stop();
  }
});
然后只需将其包含在您希望其工作的每条路线中:

App.AboutRoute = Ember.Route.extend(App.PaceLoader, {
  //the rest of your route code here...
});
我以前没有使用过Pace,但您可以将它添加到Ember不太明显的装载路线中(我不相信他们已经记录了它…),这在每个转换中都会用到:

App.LoadingRoute = Ember.Route.extend({
  activate: function() {
    this._super();
    return Pace.restart();
  },
  deactivate: function() {
    this._super();
    return Pace.stop();
  }
});

如果这样做有效,您就不必将其包括在任何其他路线中。:)

谢谢,最后一个选项似乎不起作用,但第一个选项似乎很有趣,尽管我用@Kalman Hazins-answer解决了这个问题,这似乎更简单。谢谢谢谢,最后一个选项似乎不起作用,但第一个选项似乎很有趣,尽管我用@Kalman Hazins-answer解决了这个问题,这似乎更简单。谢谢谢谢,最后一个选项似乎不起作用,但第一个选项似乎很有趣,尽管我用@Kalman Hazins-answer解决了这个问题,这似乎更简单。谢谢谢谢,最后一个选项似乎不起作用,但第一个选项似乎很有趣,尽管我用@Kalman Hazins-answer解决了这个问题,这似乎更简单。谢谢