2016-03-29 14 views
0

Direktifimin benimsediği içeriklerin bir kısmını kopyalamam gereken bir "yapışkan tablo başlığı" bileşeni oluşturmaya çalışıyorum. $compile ile, ifadeleri zaman temel veri değişiklikler güncellenir, ancak ng-repeat hiç işe görünmüyor:Kısmi içerik Transclude

ben içeriği transclude şekline bağlı olarak, sadece kısmen de iyi çalışır. İlk seferinde bile çıkmıyor, daha sonra güncellemeyi bırakın. Basitçe ben hiç işe görünmüyor bulundu kısmi içerik ekleme: http://plnkr.co/edit/xkAkzl8ID3m5Ras3Ww31

  1. ilk süper geçerli: element.append($(transcludedEl).find('.wrapper'));

    Benim açımdan göstermek için, ben aynı kod üç sürümlerini kullanan bir plunkr oluşturduk Sadece ne olması gerektiğini göstermek için hizmet veren basit doğrudan ng-tekrarı. İkincisi, tam içeriğini aktaran bir yönerge kullanır;

  2. Üçüncüsü (aşağıda yeniden üretilmiştir), içeriğinin yalnızca bir kısmını dahil etmek için gereksinim duyduğum ancak çalışmayacak bir yönerge kullanır.

ilginç bit şudur: $compile, .clone() ve .html() ait

app.directive('stickyPartial', ['$compile', '$timeout', function($compile, $timeout) { 
    return { 
     restrict: 'E', 
     transclude: true, 
     template: '<div></div>', 
     link: function(scope, element, attrs, controller, transclude) { 
      transclude(scope, function(transcludedEl) { 
      // this is what i want to achieve - not working   
//   element.append($(transcludedEl).find('.wrapper')); 

      // neither is this, though it does support expressions 
      $compile($(transcludedEl).find('.wrapper'))(scope, function(clone) { 
       element.append(clone); 
      }); 
      }); 
     } 
    }; 
}]); 

Şimdiye kadar, ben denedim bazı kombinasyonlar, ama boşuna. Derlenmiş şablondan çalışan kısmi bir DOM ağacı veya el ile derleyemediğim gibi ng-repeat ile kullanışlı kısmi bir HTML kaynağı elde edemiyorum.

Son çare olarak, DOM'ı açısal işlem bittikten sonra kopyalamayı deneyebilirim (önceki gibi görünüyordu) ve ilgili model verisi her değiştiğinde bu işlemi elle yinelemeliyim. Başka bir yolu varsa, düşünmeden, bundan kaçınmayı çok isterim.

cevap