一尘不染

如何转换成属性?

angularjs

是否可以某种方式ngTransclude用于属性值,而不是替换内部HTML内容?例如这个简单的指令

var testapp = angular.module('testapp', [])

testapp.directive('tag', function() {
  return {
    template: '<h1><a href="{{transcludeHere}}" ng-transclude></a></h1>',
    restrict: 'E',
    transclude: true
  }
});

并用作

<tag>foo</tag>

我希望它翻译成

<h1><a href="foo">foo</a></h1>

有什么办法吗,还是我必须使用属性而不是包含?

这是 摆弄例子


阅读 223

收藏
2020-07-04

共1个答案

一尘不染

像这样:

var testapp = angular.module('testapp', [])

testapp.directive('tag', function() {
  return {
    restrict: 'E',
    template: '<h1><a href="{{transcluded_content}}">{{transcluded_content}}</a></h1>',
    replace: true,
    transclude: true,
    compile: function compile(tElement, tAttrs, transclude) {
        return {
            pre: function(scope) {
                transclude(scope, function(clone) {
                  scope.transcluded_content = clone[0].textContent;
                });
            }
        }
    }
  }
});​

摆弄

2020-07-04