Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 在一个元素中组合两个文本操作指令_Angularjs_Angularjs Directive - Fatal编程技术网

Angularjs 在一个元素中组合两个文本操作指令

Angularjs 在一个元素中组合两个文本操作指令,angularjs,angularjs-directive,Angularjs,Angularjs Directive,编辑:这个问题的答案是 我有两个角度指令,它们都转换文本;一个是从MarkDown到HTML-see,一个是从MathJax-LaTeX到HTML-see。为了简单起见,让我们称之为 <div directive1="textCtrl.body"></div> <div directive2="textCtrl.body"></div> 这两个指令看起来大致相同 app.directive('directive1', function ($com

编辑:这个问题的答案是

我有两个角度指令,它们都转换文本;一个是从MarkDown到HTML-see,一个是从MathJax-LaTeX到HTML-see。为了简单起见,让我们称之为

<div directive1="textCtrl.body"></div>
<div directive2="textCtrl.body"></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);
      });
  }
};
});
如果directive1的优先级低于directive2的优先级,则首先执行它。但是,directive2接收的元素内容仍然是原始模型值,而不是由directive1操纵的内容。因此,输出中只有2个附加到modelValue


知道哪里出了问题吗?

尝试使用指令的Priority属性。@RobJ您能更具体一点吗?如何将两个指令btf markdown和mathjax组合成一个元素?是否尝试按所需顺序将这两个属性添加到div中?@embee all和textCtrl.body参数?那不行;似乎只有优先级较高的指令才被应用。有关指令的优先级,请参见示例
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);
      });
  }
};
});