2016-03-25 30 views
1

Görüntü en boy oranına bağlı olarak ng-sınıfı (içten-tekrar) nasıl ayarlayabilirim?Resim açısına göre açısal ng-sınıfı

gibi bir şey ...

<div ng-repeat="img in images" style="width: 100px; height: 100px;"> 
    <img ng-src="{{img}}" ng-class="{'wide': img.width/img.height > 1, 'tall': img.width/img.height <= 1}" /> 
</div> 

DÜZENLEME: Burada asıl sorun için resmin bekliyor :(

+0

. Senin için çalışmıyor mu? – Lex

+0

Nop ... "img.width" img dizisinin bir özelliği değil .... Resim genişliğini ve yüksekliğini elde etmek istiyorum ama nasıl olduğunu bilmiyorum –

+0

Oh, ha ... gotcha. [Bu cevap] (http://stackoverflow.com/a/14508318/548997) yardım ediyor mu? Görünüşe göre bir yönerge yazmanız gerekecek (bu, DOM ile uğraşmak istediğiniz her an başladığınızda oldukça standarttır). – Lex

cevap

1

CSS nesne-fit ... çünkü IE benim için çalışmıyor img json nesnesindeki width/height özelliklerini ayarlamadan önce yükle Bu şekilde bir şey çalışacaktır ..

Önemli: Scope.apply - Kapsamı açısal olmayan bir bağlamda değiştirdiğiniz için, yani jQuery'de kapsamı çağırın, böylece digest-watch döngüsü oluşur ve variabl doğru şekilde kurulur.

Plunker

HTML:

<img ng-src="{{img}}" image-set-aspect ng-class="{'wide': img.width/img.height > 1, 'tall': img.width/img.height <= 1}" /> 

Yönergesi: çalışması lazım benziyor

app.directive('imageSetAspect', function() { 
    return { 
     scope: false, 
     restrict: 'A', 
     link: function(scope, element, attrs) { 
     element.bind('load', function() { 
      // Use jquery on 'element' to grab image and get dimensions. 
      scope.$apply(function() { 
       scope.imageMeta.width = $(element).width(); 
       scope.imageMeta.height = $(element).height(); 
       console.log(scope.$parent.imageMeta); 
      }); 
     }); 
     } 
    }; 
}); 
+0

Dr Jones'u TEŞEKKÜR EDERİZ. Gerçekten özelliklere ihtiyacım yok, sadece bir "eskiz" idi. Burada önemli olan şey, 'geniş' veya 'uzun' sınıfları doğru uygular. [Bu] (https://plnkr.co/edit/nXzDbM5GldH8jezLXZA5?p=preview) plunker'tır. Beklenen sonucun bir örneğini göreceksiniz. Yardımlarınız ve zamanınız için tekrar teşekkürler! –

+0

Yukarıda güncellenen çözüm. –

+0

Dr Jones, teşekkür ederim, plunker zaten! Ama benim uygulamada çalışmıyor ... Bu iki satır 'yanlış bir şey. Kapsam. $ Parent.imagen.width = $ (element) .width();' ve 'kapsam. $ Parent.imagen.height = $ (eleman)) .height(); ' Hata ayıklama modunda, bu satırdan sonra' $ (element) .width(); '' scope. $ parent.imageMeta.width'… değerlerini göremiyorum. kapsam. $ parent.imageMeta.width, tanımsız. –