Ng-transclude nedir?


266

StackOverflow ng-transclude tartışan bir dizi soru gördüm, ama hiçbiri layman açısından ne olduğunu açıklayan.

Belgelerdeki açıklama aşağıdaki gibidir:

Kopyalamayı kullanan en yakın üst yönergenin kopyalanmış DOM için ekleme noktasını işaretleyen yönerge.

Bu oldukça kafa karıştırıcı. Birisi ne ng-transclude'un ne yapmak istediğini ve nerede kullanılabileceğini basit bir şekilde açıklayabilir mi?


1
temel olarak, belirli bir html etiketi veya yönergesi için eklediğiniz her şey için bir işaretleme noktasıdır. bir yönerge ile kullanın ve daha iyi anlayacaksınız.
za

Yanıtlar:


492

Transclude işaretlemesinde direktif içine konur yakalama her şeyi açısal anlatmak ve bir yerde kullanmak için bir ayardır (aslında nerede ng-transcludeyer almaktadır) yönerge şablonda. Bu konu hakkında daha fazla bilgiyi direktiflerin dokümantasyonuna ilişkin Diğer Unsurları Sarma Eden Direktif Oluşturma bölümünde bulabilirsiniz .

Özel bir yönerge yazarsanız, direktif şablonunda öğenin içeriğini eklemek istediğiniz noktayı işaretlemek için ng-transclude komutunu kullanırsınız

angular.module('app', [])
  .directive('hero', function () {
    return {
      restrict: 'E',
      transclude: true,
      scope: { name:'@' },
      template: '<div>' +
                  '<div>{{name}}</div><br>' +
                  '<div ng-transclude></div>' +
                '</div>'
    };
  });

Bunu işaretlemenize koyarsanız

<hero name="superman">Stuff inside the custom directive</hero>

Şu şekilde görünecektir:

Süpermen

Özel yönerge içindeki bilgiler

Tam örnek:

Index.html

<body ng-app="myApp">
  <div class="AAA">
   <hero name="superman">Stuff inside the custom directive</hero>
</div>
</body>

jscript.js

angular.module('myApp', []).directive('hero', function () {
    return {
      restrict: 'E',
      transclude: true,
      scope: { name:'@' },
      template: '<div>' +
                  '<div>{{name}}</div><br>' +
                  '<div ng-transclude></div>' +
                '</div>'
    };
  });

Output markup

resim açıklamasını buraya girin

Görselleştir:

resim açıklamasını buraya girin


90
Bu, resmi belgelerinden çok daha iyi bir açıklamadır. Bu kafamı incitiyor.
Capaj

4
Mükemmel cevap! :) Paylaştığınız bağlantı, sürecini anlamama yardımcı oluyor transclude.
Paulo Oliveira

10
Açısal, şu anda sahip oldukları dokümanlar yerine bu açıklamayı kullanmalıdır.
Jeremy W

1
@codeofnode kendi açısal derleme hizmeti, işte ilgili kod github.com/angular/angular.js/blob/…
Ben Fischer

1
Stackoverflow cevaplar açısal kavramlar
sridhar anlamak

1

bu bir tür verimdir, element.html () 'den gelen her şey orada oluşturulur, ancak yönerge özellikleri hala belirli bir kapsamda görünür.


3
Tahmin ettiğim en iyi cevap mükemmel, ama eğer yakut bir arka plandan geliyorsanız, katılıyorum, yieldiyi bir benzetme gibi görünüyor.
Apie

2
@Apie evet, yakut bir arka plandan geliyorum
Sîrbu Nicolae-Cezar
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.