【问题标题】:What is the main use of transclusion in angularjsangularjs中transclusion的主要用途是什么
【发布时间】:2023-03-31 08:06:01
【问题描述】:

我最近在指令中遇到了嵌入,有这个概念的目的是什么。据我所知,它封装了一个对象,并且可能有 2 路绑定。但这可以通过在指令的范围属性中使用“=”来实现。那么指令有什么大不了的呢?

【问题讨论】:

标签: angularjs angularjs-directive transclusion


【解决方案1】:

Transclude 允许:

  • 创建包装其他元素的指令。
  • 多次克隆相同的转入内容。
  • 在事件发生时重新克隆插入的内容。

ngTransclude 和 $transclude

  • 使用 transclude 选项时,元素内容会在编译阶段从 DOM 中删除。
  • linking phase 的第 5 个参数(或指令控制器内的 $transclude)是一个 $transclude function,它允许您克隆转入的内容,将其应用于范围并将其重新插入需要时使用 DOM。
  • Angular.js 有一个针对简单情况的内置指令:ngTransclude

我推荐这些教程:

一些角度内置指令(ng 模块)使用transclude 选项:

docs

transclude 选项有什么作用?它使带有此选项的指令的内容可以访问指令外部而不是内部的范围。

实际上,不太准确,它仅适用于 angular.js 内置指令的默认行为和 $transclude 函数在不带范围参数的情况下调用时的默认行为。

$transclude 函数允许您应用所需的任何范围作为可选的第一个参数:

app.directive('example',function(){
  return {
    transclude: true,
    template: "<div>example</div>"
    link: function (scope, element, attrs, ctrl, $transclude){
      $transclude(scope, function(clone){
        element.append(clone);
      })
    }
  }
})

【讨论】:

  • 好答案,transclude的真正实际用途。
【解决方案2】:

我的主要用途是将指令的内部内容重新定位到指令模板内ngTransclude 的任何位置。

http://plnkr.co/edit/aQ7SG58g0njSerM8FsNz?p=preview

var app = angular.module('myApp', []);

app.directive('wrapMe', [function () {
  return {
    restrict: 'E',
    transclude: true,
    template: '<span>Stuff before [<b ng-transclude></b>] Stuff after</span>'
  };  
}]);

【讨论】:

    猜你喜欢
    • 2010-10-17
    • 2020-06-25
    • 1970-01-01
    • 2011-11-09
    • 2016-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-13
    相关资源
    最近更新 更多