Ember.js为每条路线的路线变更运行功能。全局激活功能?

时间:2015-09-11 20:37:35

标签: javascript ember.js

我正在使用MathJax库,它允许您在页面上使用乳胶,但只有在您从<a>访问路线时才会运行。如果您从{{link-to}}帮助者访问,则它不会运行它的排版功能,因为该页面实际上并未重新加载。

我已经能够通过将其放在每条路线中来解决这个问题:

  activate () {
    Ember.run.scheduleOnce('afterRender', this, function() {
      MathJax.Hub.Queue(["Typeset", MathJax.Hub, document.body]);
    });
  }

但我很好奇是否有全局激活功能我可以覆盖/扩展以避免将此语句放在每一页上。

1 个答案:

答案 0 :(得分:4)

您可以创建一个mixin(http://emberjs.com/api/classes/Ember.Mixin.html):

//app/mixins/base-route.js
import Ember from 'ember';

export default Ember.Mixin.create({
  activate () {
    Ember.run.scheduleOnce('afterRender', this, function() {
      MathJax.Hub.Queue(["Typeset", MathJax.Hub, document.body]);
    });
  }
});

//app/routes/some.js
import Ember from 'ember';
import RouteMixin from '../mixins/base-route';

export default Ember.Route.extend(RouteMixin, {});

或尝试使用重新打开(http://guides.emberjs.com/v1.13.0/object-model/reopening-classes-and-instances/