2015-08-18 25 views
7

我有下面的代碼:如何用「dom-if」在polymer1.0中編寫條件?

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

item.hasAttach =真/假

但我想,如果像查詢條件在此: 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> 

應該像{{item.content_format_code == 'PDF'}} =真/假 但它沒有測試這個。 我想按照文件類型顯示圖標。 item.content_format_code =='PDF' This is not checked true/false。在聚合物中,它只用真/假作爲條件實際值,但不檢查表達。 請幫幫我。

回答

9

目前,聚合物僅支持條件的簡單構造。這意味着你可以不喜歡寫東西

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

你留下兩個選擇:

  1. 用於的條件的項目是一個布爾值,不是簡單地寫

    [[ item ]] 
    

    [[ !item ]] 
    

    wil我工作。唯一可以使用的操作符是'!'

  2. 隨着越來越多的複雜條件下,use computed bindings

    [[ _computeResult(item) ]] 
    
13

您可以使用computed bindings

定義一個計算表達式並將其綁定到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

嗨瑪麗亞感謝回覆它真的幫了我。如果我有20個條件會寫什麼來增加代碼。我不希望代碼冗長。我想優化代碼。可能嗎? – Ravi

+1

Hi @Ravi。我已經更新了我的答案。你可以傳入一個字符串文字(例如「PDF」)作爲你的參數。 – Maria

0

我只是做了類似的事情,如果你訪問你的數據就容易多了,只是有布爾值的列表,如「是-PDF,是-JPG,是-PNG」。然後你可以做;

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

這就是我終於實現了。