2015-08-18 15 views
7

Mam poniżej kodu:Jak napisać warunek w polimer1.0 z "dom-if"?

<template is="dom-if" if="{{item.hasAttach}}"> 
    <i class="fa fa-paperclip"></i> 
</template> 

item.hasAttach = true/false

Ale chcę, aby sprawdzić stan, w ten czy jak: item.content_format_code == 'PDF'

<template is="dom-if" if="{{item.content_format_code == 'PDF'}}"> 
     <i class="fa fa-pdf"></i> 
    </template> 
<template is="dom-if" if="{{item.content_format_code == 'JPEG'}}"> 
     <i class="fa fa-jpg"></i> 
    </template> 
<template is="dom-if" if="{{item.content_format_code == 'xls'}}"> 
     <i class="fa fa-xls"></i> 
    </template> 

powinno być jak {{item.content_format_code == 'PDF'}} = prawda/fałsz Ale to nie testuje tego. Chcę pokazać ikonę według typu pliku. item.content_format_code == 'PDF' to nie jest sprawdzane true/false. W polimerze przyjmuje on tylko wartość true/false jako warunkową wartość rzeczywistą, ale nie sprawdza wyrażenia. Proszę, pomóż mi.

Odpowiedz

9

Obecnie polimer obsługuje tylko proste konstrukcje dla warunków. Oznacza to, że nie można napisać coś jak

[[ item.something == 'CONDITION' ]] 

pozostaje ci 2 możliwości:

  1. Element używany do stanu jest wartością logiczną, niż po prostu pisząc

    [[ item ]] 
    

    lub

    [[ !item ]] 
    

    wil Pracuję. Jedynym operatorem, którego możesz użyć, jest '!'

  2. Przy bardziej złożonych warunkach use computed bindings:

    [[ _computeResult(item) ]] 
    
13

Można użyć computed bindings.

Definiowanie funkcji, która oblicza wyrażenie i wiąże go z dom-if.

<template is="dom-if" if="[[isFormat(item.content_format_code, 'PDF')]]"> 
    <i class="fa fa-pdf"></i> 
</template> 

Polymer({ 
    is: "my-element", 
    isFormat: function(code, format) { 
     return code === format; 
    } 
}); 
+0

Cześć Maria, dziękuję za odpowiedź, bardzo mi pomogła. Co napisać, jeśli mam 20 warunków, to zwiększy kod. Nie chcę, żeby kod był długotrwały. Chcę zoptymalizować kod. Czy to możliwe? – Ravi

+1

Witam @Ravi. Zaktualizowałem swoją odpowiedź. Możesz przekazać ciąg literału (na przykład '' PDF'') jako argument do funkcji. – Maria

0

po prostu zrobił coś podobnego, a jeśli masz dostęp do danych jest o wiele łatwiej jest po prostu mieć listę logicznych jak "Is-PDF, JPG to-jest-PNG". Następnie możesz po prostu zrobić;

<template is="dom-if" if="[[item.is-PDF]]"> 

To, co skończyło się robi.