2017-10-28 85 views
3

我已經註冊了一個自定義的標籤,如果該指數是奇數和假返回true,如果連如下:蒸氣/葉自定義標籤不返回正確的值

class OddEvenTag: BasicTag { 
    let name = "OddEven" 

    func run(arguments: ArgumentList) throws -> Node? { 
     guard 
      arguments.count == 1, 
      let index = arguments[0]?.int 
      else { return Node(nil) } 
     print(index, index & 1) 
     return Node((index & 1) == 1) 
    } 
} 

print語句產生令人滿意的良好輸出:

0 0 
1 1 
2 0 
3 1 
... 

然而,當我用在葉文件#LOOP內的自定義標籤,如

#OddEven(offset){hello}##else(){bye} 

它總是實例化你好。我試圖在返回語句中拼寫錯誤,並且不會改變結果。我以前使用過一個(更復雜的)自定義標籤,所以我知道它們可以工作。

如果你想知道,我真的想用標籤來交替網格的行背景顏色!

+0

如果我只在文件中使用#OddEven(index)int,那麼它包含文本字符串'true'和'false'。 – Nick

回答

1

BasicTag只能用於這樣的:

#TagName(variable) 

並返回一個值。

如果要有條件地呈現以下塊這樣的:

#TagName(variable) { show if true } 

,那麼你需要擴展Tag,並把你的顯示/隱藏代碼在shouldRender(tagTemplate:arguments:value:)功能。作爲出發點,請看If tag,但不是測試真值,而是測試偶數值。

相關問題