javascript - 动态更改 Angular 指令中的 html 元素

标签 javascript angularjs

假设有一个像这样的指令的简单模板:

<section class="card {{width}} recipe-list-card">
  <div class="card-top">
    <h3>{{headerText}}</h3>
  </div>
  <div class="card-bottom">
    <div ng-transclude></div>
  </div>
</section>

在某些情况下,我想使用 h2,而在其他情况下,我想使用 h3。有什么好的方法可以通过指令改变元素吗?

这是我的指令中的内容:

module.exports = function(app) {

      app.directive('cardDirective', function() {
        return {
          restrict: 'AC',
          replace: true,
          transclude: true,
          templateUrl: '/templates/card_template.html',
          scope: {
            header: '=',
            headerText: '@',
            width: '@' //two columns, three columns, etc
          }
        }
      })
    }

我想将 header 变量分配给 h2、h3 等。到目前为止,我只能获得转义的 html(实际标签在浏览器中呈现为 <h2>)。

最佳答案

您可以为您的标题标签创建指令,如下所示:

angular.module('myApp')
    .directive('myHeading', myHeading);

function myHeading() {
    return {
        transclude: true,
        template: function(tElement, tAttrs) {
            var level = Number(tAttrs.level);
            if (level < 1 || level > 6) level = 1; // default
            return '<h' + level + '><ng-transclude></ng-transclude></h' + level + '>';
        }
    };
}

然后你可以像这样在你的模板中使用它:

<my-heading level="2">{{headerText}}</my-heading>

关于javascript - 动态更改 Angular 指令中的 html 元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34235297/

相关文章:

javascript - 需要计数数组 angularjs 的帮助

javascript - 如何在没有原生javascript join 的情况下手动实现 join 功能?

Javascript根据另一个值在json中获取值

javascript - 如何在 Scriptaculous 中创建可嵌套的可拖动对象?

javascript - Simplebar 滚动条插件 - 在功能中滚动到顶部/重置位置

javascript - 在 Html 中单击列表 (li) 项目不适用于 jquery

jquery - 显示其余 api json 响应,例如使用 Angular js 自动填充文本框

javascript - 防止下载错误文件时出现空白页

javascript - 如何将html内容解析为带格式的文本文件?

javascript - Angular Directive(指令)中的 CSS