Ben İyonik kullanıyorum ve verilere dayanarak bir <ion-list>
öğesindeki her öğenin arka plan rengini dinamik olarak değiştirmek istiyorum. Ben Bu konsol denetimini mevcutBir işlev çağrısı kullanarak ng-sınıfını kullanma - birden çok kez çağrılan
.controller('AllCasesCtrl', ['$scope', '$log', 'dummyData', function($scope, $log, dummyData) {
$scope.allCases = dummyData.cases;
$scope.getBackgroundColour = function(singleCase){
$log.log("getBackgroundColour called...singleCase type: " + singleCase.speciality);
var colourMap = {
speciality1: "speciality1Class",
speciality2: "speciality2Class",
speciality3: "speciality3Class"
};
return colourMap[singleCase.speciality];
};
}])
de denetleyici olan
<ion-list>
<ion-item ng-repeat="singleCase in allCases" ng-class="getBackgroundColour(singleCase)" class="item-avatar">
<h2>{{singleCase.date}}</h2>
<p>{{singleCase.caseType}}</p>
</ion-item>
</ion-list>
doğru sınıf dönmek için bir işlev çağrısı yoluyla bunu düşündüm, getBackgroundColour()
işlevi 7 çağrıldığını Listede her bir <ion-item>
için zaman. Neden bu ve ng-class
numaralı telefondan bir işlev çağrısı kullanmam gerekir?
100 tane elemanım olduğunu varsayalım, işlevimi çağıracağım 100 * 100 = 10 000 kere. Kirli kontrol sistemini atlamak için başka bir çözüm var mı? AngularJS ile yeni başlayan bir kişi olarak, kontrolörler arasında kalıtımın veri depolamak için kullanılabildiğini gördüm, ancak bir "en iyi uygulama" olup olmadığını bilmiyorum. Birisi bana bu konuda ışık verebilir mi? thx – Alex
@Alex Calculus'unuzdaki ikinci "100" nerededir? İfadelerinizi yalnızca bir kez değiştirmeyeceklerini biliyorsanız (bu bir kez [tembel bir kerelik ciltleme] (http://stackoverflow.com/q/23969926/2057033)) değerlendirebilirsiniz, ancak "bypass" yapamazsınız. kirli kontrol sistemi. Değerlerin onsuz değiştiğini nasıl biliyorsun? – Blackhole
Evet, bunu biraz hızlı yazdım. Fonksiyonun (100 + 99 + 98 + 97 ... + 2 + 1) kez (100 element örneğimle) çağrıldığını söylemek istedim. Kirli kontrol sistemini atlayarak, bana ihanet eden kötü ingilizcem. Başka bir yaklaşım kullanarak değeri bir kez kontrol etmenin bir yolu olup olmadığını sormak istedim. Ve son olarak, tembel bir kerelik bağlayıcınız için çok teşekkürler, bu konuda bakacağım. – Alex