我有一个angular 1应用程序,它使用mathjax格式化一些数学运算。用户可以更改方程式,然后我的程序可以解决问题并显示解决方案。我有一个指令来监视方程式的文本,当它更改时,mathjax将重新计算div并显示正确的解决方案。我用两个美元符号记下了要设置mathjax格式的文本的开头和结尾。
这在大多数情况下都可以正常工作。
但是,有时一切正常加载,伪指令像正常情况一样绑定到文本,并且对div求值。但是,没有显示mathjax格式的文本,而是保留了带有美元符号的未格式化文本。
我可以更改文本的值,并查看div的重新评估,但是对于mathjax,它仍然没有格式化。每当我打开控制台并查看错误时,似乎就会发生这种情况-好像这会使某些事情变得混乱。
我注意到,当mathjax正常工作时,通常会下载3个脚本-MathMenu.js,MathEvents.js,MathZoom.js。发生这种情况时,下载中似乎缺少MathMenu.js。
我已经追逐了一段时间,希望能收到任何建议。
Mathjax呼叫
MathJax.Hub.Configured();
MathJax.Hub.Queue(["Typeset", MathJax.Hub]);
指令
(function ()
{
'use strict';
angular
.module('app.core')
.directive('mathjaxBind', mathjaxBindDirective);
/** @ngInject **/
function mathjaxBindDirective()
{ return {
restrict: 'A',
controller: ["$scope", "$element", "$attrs", function($scope, $element, $attrs) {
$scope.$watch($attrs.mathjaxBind, function(value) {
$element.text(value == undefined ? "" : '$$'+value+'$$');
MathJax.Hub.Queue(["Typeset", MathJax.Hub, $element[0]]);
});
}]
}
};
})();