AngularJS:如何在;模板";使用转换时的函数?

AngularJS:如何在;模板";使用转换时的函数?,angularjs,angularjs-directive,Angularjs,Angularjs Directive,要在模板函数中获取指令的原始HTML,可以执行以下操作: HTML: 使用转换时,是否有办法在模板函数中获取原始HTML 最终目标是向用户呈现原始HTML: angular.module('App', []).directive('myDirective', function() { return { transclude: true, template: function(element) { var originalHTML = "How do I get i

要在
模板
函数中获取指令的原始HTML,可以执行以下操作:

HTML:

使用转换时,是否有办法在
模板
函数中获取原始HTML

最终目标是向用户呈现原始HTML:

angular.module('App', []).directive('myDirective', function() {
  return {
    transclude: true,
    template: function(element) {
      var originalHTML = "How do I get it?";

      return '<div>' +
             '  <pre>' +
                  escapeHtml(originalHTML) + // This is the original HTML
             '  </pre>' +
             '  <div ng-transclude></div>' + // and this is how it looks like
             '</div>';
    }
  };
});
angular.module('App',[]).directive('myDirective',function(){
angular.module('App', []).directive('myDirective', function() {
    return {
          template: '<div>Template</div><ng-transclude></ng-transclude>';
    }
 });
返回{ 是的, 模板:函数(元素){ var originalHTML=“我如何获得它?”; 返回“”+
angular.module('App', []).directive('myDirective', function() {
    return {
          template: '<div>Template</div><ng-transclude></ng-transclude>';
    }
 });
' ' +
angular.module('App', []).directive('myDirective', function() {
    return {
          template: '<div>Template</div><ng-transclude></ng-transclude>';
    }
 });
escapeHtml(originalHTML)+//这是原始HTML ' ' +
angular.module('App', []).directive('myDirective', function() {
    return {
          template: '<div>Template</div><ng-transclude></ng-transclude>';
    }
 });
''+//这就是它的样子
angular.module('App', []).directive('myDirective', function() {
    return {
          template: '<div>Template</div><ng-transclude></ng-transclude>';
    }
 });
'';
angular.module('App', []).directive('myDirective', function() {
    return {
          template: '<div>Template</div><ng-transclude></ng-transclude>';
    }
 });
} }; });

您必须在模板中定义原始HTML代码的插入位置

例如:

.directive('myDirective', function(origContentService) {
  return {

    priority:100,
    transclude: true,
    template: '<div>Template</div>',
    link:function(scope, elm){
         //get prop and get content
      console.log(origContentService.getContent(elm.idx));
    }
  };
}).directive('capture', function(origContentService){
  return {
    restrict:'A',
    priority:200, //<-- This must be higher
    compile:function(elm){
      //Save id and set prop
     elm.idx =  origContentService.setContent(elm.html());
     }
  }
}).service('origContentService', function(){
  var contents = {};
  var idx = 0;
  this.getContent= function(idx){
    return contents[idx];
  }
  this.setContent = function(content){
    contents[++idx] = content;
    return idx;
  }
  this.cleanup = function(){
    contents = null;
  }
});
angular.module('App',[]).directive('myDirective',function(){
angular.module('App', []).directive('myDirective', function() {
    return {
          template: '<div>Template</div><ng-transclude></ng-transclude>';
    }
 });
返回{ 模板:“模板”;
angular.module('App', []).directive('myDirective', function() {
    return {
          template: '<div>Template</div><ng-transclude></ng-transclude>';
    }
 });
} });

这将把原始HTML放在
模板之后

我可以想到的一种方法是使用另一个指令,该指令将通过标识符将内容保存到可访问的服务中。因此,这意味着您需要添加另一个用于此目的的指令。执行捕获的指令的优先级必须高于使用它的任何其他指令

例如:-

   <div  my-directive capture>
     <input type="text">
   </div>

或者将内容本身保存为元素上的数据(或属性)。因此,当元素被破坏时,它的属性也会被破坏

.directive('myDirective',function(){
angular.module('App', []).directive('myDirective', function() {
    return {
          template: '<div>Template</div><ng-transclude></ng-transclude>';
    }
 });
返回{ 优先:100, 是的, 模板:“模板”,
angular.module('App', []).directive('myDirective', function() {
    return {
          template: '<div>Template</div><ng-transclude></ng-transclude>';
    }
 });
链接:功能(范围,elm){ 日志(elm.data('origContent');
angular.module('App', []).directive('myDirective', function() {
    return {
          template: '<div>Template</div><ng-transclude></ng-transclude>';
    }
 });
} }; }).directive('capture',function(){
angular.module('App', []).directive('myDirective', function() {
    return {
          template: '<div>Template</div><ng-transclude></ng-transclude>';
    }
 });
返回{ 限制:'A',
angular.module('App', []).directive('myDirective', function() {
    return {
          template: '<div>Template</div><ng-transclude></ng-transclude>';
    }
 });
优先:200, 编译:函数(elm){ data('origContent',elm.html());
angular.module('App', []).directive('myDirective', function() {
    return {
          template: '<div>Template</div><ng-transclude></ng-transclude>';
    }
 });
} } });

你在这里的最终目标是什么?也许有解决办法?@MichalCharemza我想向用户展示原始HTML。我更新了这个问题。是的,两个指令可以工作,但我想知道是否有可能用一个指令实现同样的效果。另见。@MishaMoroshko我不想污染另一个答案。在这里,它支持同一父作用域上的多个指令,可能更简洁,并且没有多个按钮。如果你觉得这样更好,我可以发布这个。非常感谢你的努力!!我觉得好多了。请把这个寄出去。@MishaMoroshko不客气。我已经贴了,看一看。干杯
angular.module('App', []).directive('myDirective', function() {
    return {
          template: '<div>Template</div><ng-transclude></ng-transclude>';
    }
 });