Text.Blaze有一個操作符!添加屬性到html:Text.Blaze中的可選html屬性
option ! id "bla" ! value "1" ! selected "" $ "Hello!"
我的問題是我如何使屬性可選? 現在我的代碼是醜陋:
option ! id "bla" ! value "1" ! (if x == val then selected "" else someStupidAttribute "") $ "Hello!"
這導致每個HTML選項元素有不必要的屬性無關,只是因爲我必須提供一個。
編輯:我接受了哈馬爾的答案。我創建了一個輔助函數:
(!?) :: Attributable h => h -> (Bool,Attribute) -> h
html !? (True, attr) = html ! attr
html !? _ = html
這裏是如何使用它:
option ! id "bla" ! value "1" !? ((k == val), selected "") $ "Hello!"
''是現在[文本閃耀Internal.html(https://hackage.haskell.org/package/blaze -markup-0.7.0.3 /文檔/文本布拉-Internal.html#T:歸屬)。 :) – Johannes 2015-12-25 22:59:52