我正在尝试在angularjs中使用mathjax。我在服务器中有很多html内容,它也需要编辑。 这是我用来触发mathJax渲染的指令。
app.directive("mathTex", ['$log',function($log) {
return {
restrict: "C",
link: function(scope, element, attributes) {
var currentElement = element[0];
//alert("mathJax directive called");
MathJax.Hub.Queue(["Typeset", MathJax.Hub, element[0]]);
}
}}]);
我正在使用另一个指令来编译范围内任何更改的html。
app.directive('dynamicHtmlCompile', ['$compile','$parse','$log','$sanitize', function ($compile, $parse, $log, $sanitize) {
return {
restrict: 'A',
replace: true,
link: function (scope, ele, attrs) {
scope.$watch(attrs.dynamicHtmlCompile, function(html) {
ele.html(html);
$compile(ele.contents())(scope);
});
}
}
}]);
这两个指令都适用于正常情况,但适用于
等表达式 <span class="math-tex">\({{2v}}/2\)</span>
,由于表达式中的花括号,它会触发错误。
Error: [$parse:syntax] Syntax Error: Token 'v' is an unexpected token at column 2 of the expression [2v] starting at [v].
编辑内容我正在使用mathjax和ckeditor。它也可以正常工作。
到目前为止,我尝试了'ng-html-bind',我无法使用它,因为它不支持双向绑定。另一种选择是更改插值开始和结束符号。我在项目中使用了一些库,我不想搞砸只是为了解决这个问题。
我可以控制html的来源,如果有必要,我可以选择更改(可能,查找和替换)格式或文本。任何建议,将不胜感激。
谢谢