修改:此问题的内容为http://plnkr.co/edit/mlKyL1。
我有两个角度指令,它们都转换文本;一个从MarkDown到HTML(参见here),一个来自MathJax(" LaTeX")到HTML(参见here)。为简单起见,我们称之为
<div directive1="textCtrl.body"></div>
<div directive2="textCtrl.body"></div>
(此处,textCtrl.body
来自输入textarea
并实时更新。)
现在,我想将两者结合起来,textCtrl.body
首先贯穿directive1
,然后通过directive2
结果。为实现这一目标,我将textCtrl.body
放入模型中并使两个指令都依赖于它。
<div ng-model="textCtrl.body" directive1 directive2></div>
这两个指令看起来大致类似于
app.directive('directive1', function ($compile) {
return {
require: "ngModel",
restrict: 'A',
priority: 10,
link: function (scope, element, attrs, ngModel) {
scope.$watch(
function() {return ngModel.$modelValue;},
function(modelValue) {
modelValue += "1"; // do something meaningful here one day
element.html(modelValue);
});
}
};
});
如果priority
的{{1}} 更低低于directive1
的优先级,则首先执行。但是,directive2
收到的element
内容仍然是原始directive2
,而不是modelValue
操纵的内容。因此,只有directive1
会附加到输出中的2
。
关于出了什么问题的任何想法?