2016-07-06 15 views
5

Denetleyici dizisinden veri yükleyen ve bunları bir tabloda tutan bir HTML şablonum var. Ayrıca, tablo satırları için transleksiyonu yapan bir yönergeye sahibim. Veri dizisi API isteklerine dolduruluyor. Yeni isteklerden sonra isteğim var, masamda birleştirildi. Önceki sonuçların silinmesi yerine her istek için bir dizi satır ekleniyor.Önceki verisi temizle Talep göndermeden önce

Dizilimimin durumunu kontrol etmek için denetleyici kodumda hata ayıkladı ve her istekten önce temizleniyor. Kesinlikle. Ancak, önceki sonuçlara yeni sonuçlar eklenir. Nedeni benim şablon çıkarma yönergesinde olabilir. ekleme için kullanılan

angular.module('app').directive('myResult', 
['$compile', 
function ($compile) { 
    return { 
     transclude: true, 
     templateUrl: '/Scripts/app/templates/resultTemplate.html', 
     compile: function (tElement, tAttr, transclude) { 
      var contents = tElement.contents().remove(); 
      var compiledContents; 
      return function (scope, iElement, iAttr) { 
       if (!compiledContents) { 
        compiledContents = $compile(contents, transclude); 
       } 
       compiledContents(scope, function (clone, scope) { 
        iElement.replaceWith(clone); 
       }); 
      }; 
     } 
    } 
}]); 

Ve nihayet şablonu::

<tr class="big-bord"> 
    <td colspan="4"><h3>{{result.fullName}}</h3></td> 
</tr> 
<tr ng-repeat="item in result.items"> 
    <td>{{item.value1}}</td> 
    <td>{{item.value2}}</td> 
    <td>{{item.value3}}</td> 
    <td>{{item.value4}}</td> 
</tr> 

Ben nasıl İşte

<div class="row"> 
    <div class="col-md-12"> 
     <div id="results" ng-show="results.length > 0"> 
      <table class="table result-table"> 
       <thead> 
        <tr> 
         <th>1</th> 
         <th>2</th> 
         <th>3</th> 
         <th>4</th> 
        </tr> 
       </thead> 
       <tbody> 
        <tr ng-repeat="result in results" my-result></tr> 
       </tbody> 
      </table> 
     </div> 
    </div> 
</div> 

benim ekleme direktifin kodudur: gibi

şablon görünüyor Her API isteğinden önce sonuçlarımı temizle?

+0

Hangi açısal sürümünü kullanıyorsunuz? Angular 1.4 belgelerine göre derleme (transclude) kullanımdan kaldırıldı. – jbrown

+0

jbrown, Angular 1.5.7 kullanıyorum. Transkripsiyon yerine ne geliyor? – Waldemar

+0

Açısal dokümanlar durumu "bunun yerine bağlantı işlevine iletilen transclude işlevini kullanır". Daha fazla bilgi için: https://docs.angularjs.org/api/ng/service/$compile – jbrown

cevap

4

Sorunumu çözdüm. Birden fazla <tbody> etiketine bir tabloda izin verildiği ortaya çıktı. Yani sadece <tbody> etiketine benim ng tekrarı taşındı:

<tbody ng-repeat="result in results"> 
    <tr class="big-bord"> 
     <td colspan="4"><h3>{{result.fullName}}</h3></td> 
    </tr> 
    <tr ng-repeat="item in result.items"> 
     <td>{{item.value1}}</td> 
     <td>{{item.value2}}</td> 
     <td>{{item.value3}}</td> 
     <td>{{item.value4}}</td> 
    </tr> 
</tbody> 

Yani, hiç bir direktifleri gerekmez.

+1

Birden çok 'tbody' önlemek istiyorsanız, ilk satırdaki 'ng-repeat-start'ı ve ikinci satırdaki' ng-repeat-end' komutunu kullanabilir. [Daha fazla bilgi] (https://docs.angularjs.org/api/ng/directive/ngRepeat). –

İlgili konular