2016-03-25 18 views
0

Denetleyicisinden iki değer alan bir yönerge oluşturdum. Ng-sınıfının, değere daha az veya eşit olan yıldızlara bir sınıf uygulayacağı düşünülmektedir. Beklediğim gibi yapmıyor.ng sınıfı koşullu ifade Yönerge şablonunda çalışmıyor

talimatı:

<star-rating-reviews 
    class="item-star-review" 
    review-count="{{item.reviewCount}}" 
    review-rate="{{item.rating}}" 
    ng-show="item.rating && item.rating >= 3"> 
</star-rating-reviews> 

Yönerge Şablon:

<div class="star" ng-repeat="star in [1,2,3,4,5] track by $index"> 
    <svg viewBox="0 0 24 24" preserveAspectRatio="xMidYMid meet" 
     ng-class="{'accent-contrast-fill': star <= startCount}" 
      class="accent-contrast-fill"> 
     <g class="style-scope iron-icon"> 
      <path d="M12 17.27L18.18 21l-1.64-7.03L22 9.24l-7.19-.61L12 2 9.19 8.63 2 9.24l5.46 4.73L5.82 21z"></path> 
     </g> 
    </svg> 
</div> 
<div class="reviews"> 
    {{reviewCount}} 
</div> 

ng sınıf uygun yıldız sınıf ekleme değildir.

Yönergesi:

batman.directives.StarRatingReviews = function($timeout, typeUtils) { 

    function link(scope, element, attributes, directiveCtrl) { 
     $timeout(function() { 
      if (scope.reviewRate && scope.reviewCount) { 
      directiveCtrl.reviewCount = typeUtils.toNumberStrict(scope.reviewCount); 
      directiveCtrl.starCount = typeUtils.toNumberStrict(scope.reviewRate); 

     if (!isNaN(directiveCtrl.reviewCount) && 
      !isNaN(directiveCtrl.starCount) && 
      directiveCtrl.starCount >= NumConstants_.MIN_STAR_COUNT_REQUIRED && 
      directiveCtrl.reviewCount > NumConstants_.ZERO && 
      directiveCtrl.reviewCount < NumConstants_.EXCEEDING_VALUE) { 

      directiveCtrl.setStarsAndReviews_(); 
      scope.reviewCount = directiveCtrl.reviewCount; 
      scope.starCount = directiveCtrl.starCount; 

     } 
     } 
    }); 
    } 

    return { 
    restrict: 'AE', 
    controller: gpa.layouts.batman.controller.StarRatingReviewsCtrl, 
    link: link, 
    scope: { 
     reviewCount: '@', 
     reviewRate: '@', 
     index: '@', 
     check: '@' 
    }, 
    templateUrl: 'template.html' 
    }; 
}; 
+0

StartCount'ın nereden geliyor ve değeri nedir? – Lex

+0

startCount, ana denetleyiciden gelen "review-rate =" {{item.rating}} "özniteliğinden geçirildi. Item.rating olmasının nedeni, geliştiricinin item.rating veya item.reviewCount öğesinden geçme seçeneğine sahip olmasıdır. Değer her zaman 1 ile 5 arasında bir sayıdır. Değer direktifin içine geçirildikten sonra, yönerge bir yönerge denetleyicisiyle denetler ve değeri scope.starCount'ta saklar. Yani değer her zaman 1 ile 5 arasındadır. Net olmadıysam yorumlama oranı = "{{item.rating}}" direktifin kendisinde. – Aaron

+0

Eksik yönerge için özür dilerim. Şirket politikaları nedeniyle ne kadar kod paylaştığım konusunda dikkatli olmalıyım. – Aaron

cevap

0
ng-class="{'accent-contrast-fill': star <= startCount}" 

bu startCount veya starCount olmalı mı? Belki bir yazım hatası.

+0

Hey adamım, teşekkürler. Sonuçta yazım hatası vardı. Vay. – Aaron

+0

Glad I yardım edebilirim =) – sebenalern