替换AngularJS指令中的外部HTML

时间:2017-11-17 13:33:27

标签: angularjs

我想编写一个AngularJS指令,例如

<my-directive>
    <inner-body>
        normal HTML and Angular constructs
    </inner-body>
</my-directive>

应该转换为

<div class="group">
  <div> directive inserted text </div>
  <div class="groupBody">
      normal HTML and Angular constructs
  </div>
</div>

基本上,我希望能够灵活地在inner-body内编写HTML。该指令将其转换为div并将一些属性应用于此div。

有可能吗?

TIA。

1 个答案:

答案 0 :(得分:1)

是的,可以使用ngTranscludengTransclude

从AngularJS中提取:

<script>
  angular.module('transcludeExample', [])
   .directive('pane', function(){
      return {
        restrict: 'E',
        transclude: true,
        scope: { title:'@' },
        template: '<div style="border: 1px solid black;">' +
                    '<div style="background-color: gray">{{title}}</div>' +
                    '<ng-transclude></ng-transclude>' +
                  '</div>'
      };
  })
  .controller('ExampleController', ['$scope', function($scope) {
    $scope.title = 'Lorem Ipsum';
    $scope.text = 'Neque porro quisquam est qui dolorem ipsum quia dolor...';
  }]);
</script>
<div ng-controller="ExampleController">
  <input ng-model="title" aria-label="title"> <br/>
  <textarea ng-model="text" aria-label="text"></textarea> <br/>
  <pane title="{{title}}"><span>{{text}}</span></pane>
</div>

您还可以使用多插槽翻译,其详细信息也包含在链接中here