2015-09-11 53 views
2

我正在使用MathJax庫,它可以讓頁面上有乳膠,但只有在訪問<a>的路徑時纔會運行。如果您訪問{{link-to}}助手,它將不會運行它的排版功能,因爲該頁面實際上並未重新加載。Ember.js在每條路徑的路由更改上運行功能。全局激活功能?

我已經能夠解決此通過把這個在每一個路線:

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

但我很好奇,如果有一個全球性的激活功能,我可以覆蓋/去繼承,以避免把這個聲明在每一頁上。

回答

4

您可以創建一個混合(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/