用于解析和替换自定义元素内容的 AngularJS 指令

标签 angularjs angularjs-directive

我想创建一个简单的 markdown 指令,它接受元素中的一些内容,解析它并用 html 替换它。

所以这样:

<markdown>#Heading</markdown>

或这个(其中 $scope.heading = '#Heading';)

<markdown>{{heading}}</markdown>

变成这样:

<h1>Heading</h1>

到目前为止我的指令(显然不完整!):

.directive('markdown', function () {
    return {
        restrict: 'E',
        replace: true,
        link: function ($scope, $element, $attrs) {
            // Grab contents
                var contents = /* How do I do this? */

                var newContents = Markdowner.transform(contents);

                // Replace <markdown> element with newContents
                /* How do I do this? */
        }
    }
})

我不确定如何获取指令的内容?我需要编译它吗?!

解析 Markdown 只是一个示例

最佳答案

给你!

Working Demo

app.directive('markdown', function() {
  return {
    restrict: 'E',
    transclude: true,
    compile: function(elem) {
      elem.replaceWith(Markdowner.transform(elem.html()));
    }
  }
});

关于用于解析和替换自定义元素内容的 AngularJS 指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20952247/

相关文章:

javascript - Cordova 'deviceready' 事件未从 Angular .run block 内触发

angularjs - $q.all 仅适用于第一次调用

javascript - 委托(delegate)句柄如何在 ionic + angularjs 中工作?

javascript - 滚动时如何使 <li> 元素固定在 <ul> 元素的顶部和底部

javascript - Angular JS ng-model-options 不适用于输入

javascript - 包括 HTML 中的 Jquery 库在内的问题

javascript - 如何限制AngularJS中的最大字符数?

javascript - Bootstrap 内容的 Angular 路由

javascript - Angular 指令修改范围,但不在 setTimeout 之后

javascript - AngularJS 过滤器和 ng-model 如何在 JavaScript 上下文中工作?