2016-04-10 19 views
0

Zamanlarımı karşılaştırıyorum ve css sınıfının adını belirlediğime göre biraz hata yaptım ve bu yüzden kod çalışmıyor. lütfen herkes kodumu gör ve hatayı nerede yaptığımı söyle.AngularJS: dinamik olarak zaman farkını temel alan ayar sınıfı

<div ng-app="app" ng-controller="ctrl" class="panel-group" id="accordion"> 

    <ul class="nav nav-pills" ng-init="catVal = 1"> 
     <li ng-repeat="item in products" ng-class="{'css-class-yellow' : moment($scope.dbTime, 'HH:mm:ss').diff(moment(item.businessTime, 'HH:mm:ss'), 'minutes') > 60,'css-class-red' : moment($scope.dbTime, 'HH:mm:ss').diff(moment(item.businessTime, 'HH:mm:ss'), 'minutes') > 200, 'css-class-green' : moment($scope.dbTime, 'HH:mm:ss').diff(moment(item.businessTime, 'HH:mm:ss'), 'minutes') > 300 }"> 
      <a href="">{{item.name}}</a> 
     </li> 

    </ul>   
</div> 

var app = angular.module("app",[]); 

app.controller("ctrl" , function($scope){ 
    $scope.dbTime='12:05:05'; 

    $scope.products = [{ 
    'name': 'Xbox', 
    'clearance': true, 
    'price': 30.99, 
    'businessTime':'04:15:22' 
    }, { 
    'name': 'Xbox 360', 
    'clearance': false, 
    'salesStatus': 'old', 
    'price': 99.99, 
    'businessTime':'12:10:22' 
    }, { 
    'name': 'Xbox One', 
    'salesStatus': 'new', 
    'price': 50, 
    'businessTime':'06:25:22' 
    }, { 
    'name': 'PS2', 
    'clearance': true, 
    'price': 79.99, 
    'businessTime':'08:11:22' 
    }, { 
    'name': 'PS3', 
    'salesStatus': 'old', 
    'price': 99.99, 
    'businessTime':'17:41:22' 
    }, { 
    'name': 'PS4', 
    'salesStatus': 'new', 
    'price': 20.99, 
    'businessTime':'21:05:22' 
    }]; 
    }); 

.css-class-yellow{ 
    background-color: yellow; 
    } 
.css-class-red{ 
    background-color: red; 
    } 
.css-class-green{ 
    background-color: green; 
    } 
+0

Hatanın nerede olduğunu açıklayabilir misiniz? "Bazı hata yaptım ve bu yüzden kod çalışmıyor" - bu yeterli – shershen

+0

kodu çalıştırıyorum ama css ayarlanmıyor .... sorun budur. – Mou

+0

"moment ($ scope.dbTime, 'HH: mm: ss') değerinizin her birini kontrol etmelisiniz. Diff (moment (item.businessTime, 'HH: mm: ss'), 'dakika')> 60 "," moment ($ scope.dbTime, 'HH: mm: ss'). diff (moment (item.businessTime, 'HH: mm: ss'), 'dakika')> 200 "- bunlardan herhangi biri doğruysa ? – shershen

cevap

2

Ben kontrolöre geri böyle karmaşık bir karşılaştırma taşımak için önereceğini:

//template 
<li ng-repeat="item in products" ng-class="{'css-class-yellow' : isYellowLess() }"> 

//controller 
$scope.isYellowLess = function(){ 
    return moment($scope.dbTime, 'HH:mm:ss').diff(moment(item.businessTime, 'HH:mm:ss'), 'minutes') > 60; 
} 

Sonra daha kolay hata.

UPD

Kontrol güncellenmiş keman: https://jsfiddle.net/4jz8uh2y/3/

sorun değil şablonunda, denetleyici ayrıştırma anı yapmanız gereken olmasıydı. Momentlerin düz versiyonunu kullandığınız için (angular-moment değil), kontrol cihazınız moment fonksiyonlarını bilmiyor, dolayısıyla zaman karşılaştırmasını düzgün değerlendiremedi.

+0

benim jsfiddle bakın https://jsfiddle.net/tridip/4jz8uh2y/1/ – Mou

+0

teşekkürler cevap olarak işaretledim. – Mou

+0

bu fck görmek https://jsfiddle.net/tridip/czjo9f1m/ ben kodlama yaklaşımı değiştirmek şimdi ilk yaklaşım gibi tarih hesaplama için işlev bildirmek ... ama düzgün çalışmıyor. Bana nedenini söyleyebilir misin? – Mou

İlgili konular