javascript - 获取被 angularjs 指令替换之前的原始模板

标签 javascript angularjs angularjs-directive

如何在被 Angular js 指令替换之前获取原始标记?这个问题已经被问过,但我发布这个问题是因为解决方案对我不起作用,而且我想知道 Angular JS 团队是否可能为此引入了任何新方法。

这是我迄今为止尝试过的:

  function $block($compile) {

    var html = '<div>new content</div>';

    return {
      restrict: 'E',
      template: function(element, attrs) {
        console.log(element); // still getting the new element
        return html;
      },
      link: function(scope, element, attrs) {
           console.log(element)
      }
    };

  }

  angular.module('directive', [])
    .directive('myDirective', $block);

如何获取旧模板,然后将其替换为新模板?

最佳答案

当您 console.log 对象时,浏览器会显示查看该对象时的内容值。记录时还没有。这就是开发者控制台的工作方式。

如果您记录innerHTML,您会发现它们是不同的:

angular.module('directive', [])

    .directive('myDirective', $block);
 
  function $block($compile) {

    var html = '<div>new content</div>';

    return {
      restrict: 'E',
      template: function(element, attrs) {
        console.log(element[0].innerHTML);
        return html;
      },
      link: function(scope, element, attrs) {
           console.log(element[0].innerHTML);
      }
    };

  }
<script src="//unpkg.com/angular/angular.js"></script>
  <body ng-app=directive>
    <h1>Directive Demo</h1>
    <my-directive><div>Old Content</div>
    </my-directive>
  </body>

关于javascript - 获取被 angularjs 指令替换之前的原始模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44995247/

相关文章:

javascript - 在 Express 中的 app.listen 之前等待异步函数完成

php - 在离线 TideSDK webapp 中将 SVG 导出为 PDF

javascript - 获取调用某个函数的脚本标签

javascript - AngularJS 模板无法通过 HTTPS 加载

javascript - 如何在不调用对象的 toString() 方法的情况下记录对象?

javascript - 如何在自定义过滤器中添加多个参数?

javascript - 当键为 'is.a.string' 时,如何在嵌套对象中获取/设置值?

javascript switch 语句/case 表达式

javascript - AngularStrap 工具提示禁用了我的自定义指令

jquery - Angularjs 模板中 script 标签内的 Javascript 未执行