2013-02-04 33 views
18

Gerçek bir değer yerine bir (önyükleme) simgesi ekleyen küçük bir açısal filtre var. O inşaat ama html kodlanmış:html oluşturan açısal filtre

var conApp = angular.module('conApp', []); 
    conApp.filter('trueIcon', function($filter){ 
    return function(booleanValue){ 
     return booleanValue ? '<i class="icon-ok"></i>' : ''; 
    } 
    }); 

i html kodunu çözmek için başka bir filtre uygulamak zorunda mı? Bunu yapmanın "açısal" bir yolu var mı?

cevap

29

html oluşturmak için ng-bind-html kullanmanız gerekir.

<span ng-bind-html="foo | trueIcon"></span> 

Bu, bunun gerçekten filtreler için geçerli olmadığını söyledi. Filtreler, görünümün/DOM'ın kendisinin öğelerini oluşturmaktan ziyade bir görünüme yazılan verileri ovalamak için daha fazladır. Muhtemelen bunun için bir yönerge oluşturarak daha iyi olacak:

app.directive('trueIcon', function() { 
    return { 
     restrict: 'E', 
     template: '<i ng-class="{\'icon-ok\': value, \'icon-not-okay\': !value}"></i>', 
     scope: { 
     value: '=' 
     } 
    }; 
}); 

<true-icon value="foo"></true-icon> 
+1

Her ikisi de harika çalışıyor! – Sucrenoir

+1

@blesh Bu durumda +1 sizin için de :-) Siz de büyük miktarda soruya cevap veriyorsunuz! –

+0

Yönergemi 'true-icon' olarak tanımlamamın bir nedeni var mı? Direktif isimleri her zaman kambur mu? – Sucrenoir

6

angularjs varsayılan olarak ifade değerlendirme sonuçlarını hijyenin sağlanmasıdır. (NgSanitize modülden)

Yukarıdakiler filtrelemenizi yaparken, belki de bunu bir yönerge haline getirmeyi düşünmelisiniz?

+0

+1 size çünkü ikimiz de aynı şeyi söyledik çünkü ... ve her zaman seni görüyorum. –

+0

Bağlantılarınızın artık geçerli olmadığını düşünüyorum. – jcollum

İlgili konular