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'
};
};
StartCount'ın nereden geliyor ve değeri nedir? – Lex
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
Eksik yönerge için özür dilerim. Şirket politikaları nedeniyle ne kadar kod paylaştığım konusunda dikkatli olmalıyım. – Aaron