在 Angularjs 中加载新视图后刷新 MathJax

use*_*995 5 mathjax angularjs

我有或多或少简单的 html 页面,其中包含由 MathJax 呈现的数学公式。我现在正在使用 AngularJS 构建一个新系统,从 Angular-seed 开始。所有单独的 html 文件都作为部分文件包含在内。正如预期的那样,仅当我刷新页面时,MathJax 才会正确呈现,当我通过框架加载它时,数学表达式不会呈现。

我必须在某个地方运行这个函数:

MathJax.Hub.Queue(["Typeset",MathJax.Hub]);
Run Code Online (Sandbox Code Playgroud)

它应该在每次加载部分后运行,以正确呈现公式。我怎样才能做到这一点?

中号

小智 0

在与您描述的相同问题苦苦挣扎之后,我找到了一个快速但有些不优雅的解决方案:包含MathJax.Hub.Queue(["Typeset",MathJax.Hub]);. 例如,这是我的控制器的一部分,我想在更新范围后重新排版 MathJax:

function selectLesson(name){
        $scope.page = name.Path;
        if(!$mdMedia('gt-md')){
            $scope.toggleSideNav('left');
        }
        MathJax.Hub.Queue(["Typeset",MathJax.Hub]);
        MathJax.Hub.Queue(["Typeset",MathJax.Hub]);
    }
Run Code Online (Sandbox Code Playgroud)

因为MathJax是异步加载的(查看MathJax文档),运行时MathJax.Hub.Queue(["Typeset",MathJax.Hub]);会等到页面重新加载才能重新排版页面。再次运行相同的命令会立即进行排版。