0

MySQL データベースから文字列として読み込まれる AsciiMath 式をレンダリングしようとしています。これは問題のdivです:

<div class="description-text" mathmode>
    {{globals.gameData[globals.navigation.selectedSubject].Chapters[globals.navigation.selectedChapter].Sections[globals.navigation.selectedSection].Problems[globals.navigation.selectedProblem].Description}}
</div>

上記のロードされた文字列は次のようなものです: `x: 4*(4x) + 2*x = 72` を解く

これは、通常の mathjax 表示の問題を修正するために使用するディレクティブです。

(function () {
'use strict';

angular
    .module('app')

    // Fixes the MathJax display issue with AngularJS        
    .directive("mathmode", function () {
        return {
            restrict: "A",
            controller: ["$element", function ($element) {
                    MathJax.Hub.Queue(["Typeset", MathJax.Hub, $element[0]]);
                }]
        };
    })
})();

このディレクティブを HTML の静的式に使用すると、すべて正常に動作します。ただし、上記の div のように動的データに使用しようとすると、ページを更新するまで式が正しくレンダリングされません。これを修正するにはどうすればよいですか?

4

1 に答える 1

0

解決策は非常に単純であり、ディレクティブはまったく必要ないことがわかりました。次の行を追加しました

setTimeout(function () {
    MathJax.Hub.Queue(["Typeset", MathJax.Hub]);
});

コントローラーで、すべてが正しく機能します。DOM が最初に落ち着くために必要なコントローラー。

于 2016-02-08T09:03:32.080 に答える