如何在Haml中进行内联if语句

7
我有这个 Haml 文件。
  %table.form_upper{:style => "display:none;", :id => 'profile-info'}
    %tr{:id => 'some-row'}

如果满足某个条件,我该如何对这个表格执行"display:none"操作呢?例如,我知道可以这么做,但我觉得一定有一种内联方式可以实现。
-if condtion
  %table.form_upper{:id => 'profile-info'}
-else
  %table.form_upper{:style => "display:none;", :id => 'profile-info'}
    %tr{:id => 'some-row'}
3个回答

14

你可以这样做:

%table.form_upper{:style => "display:#{condition ? 'none' : ''};", :id => 'profile-info'}

1
更简洁地说:%table.form_upper#profile-info(display="#{:none if condition}") - Phrogz

3
如果您提供了一个值为nilfalse的属性,Haml将不会设置它:
Haml:
- # substitute an appropriate semantic class name here (not "hidden")
%table.form_upper#profile-info{ class:condition && 'empty' }

CSS(层叠样式表):
table.empty { display:none }

最佳解决方案,选择这个。 - YogiZoli

1
这种方式更好,因为你将样式与逻辑分开,因此你拥有更多的控制:
在HAML中:
%table.form_upper{:class => "#{condition ? '' : 'nonvisible_fupper'};", :id => 'profile-info'}
   %tr{:id => 'some-row'}

在你的CSS文件中:

.nonvisible_fupper { display:none; }

1
注意,display:block是表格的错误显示样式。最好只在必要时隐藏它,并让它默认为正确的显示样式。 - Phrogz

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接