把手挡住了HAML拧紧的助手

时间:2012-05-21 19:19:52

标签: haml handlebars.js

我需要在元素的属性中使用一些把手块助手。我怎么才能得到

.some.class{:class => "{{if property}} otherClass {{/if}}"}

正确解析?这是编译后的输出:

<div class='class otherClass property}} some {{/if}} {{if'></div>

我已经尝试转义每个非单词字符,尝试单引号,并调整间距,但似乎没有什么可以修复它。我希望找到一个比使用:plain关键字更优雅的解决方案。

3 个答案:

答案 0 :(得分:1)

我发现你需要在{{}}之前为Haml添加一些字符才能接受它。例如:

%div.some.class{:class => "a{{foo}}"}

不知道,但符合我的目的。

答案 1 :(得分:0)

实际上,这个技巧对任何中等复杂的把手表达都不起作用。

最后,我通过在haml中使用字符串文字来解决这个问题。所以在问题中显示的示例情况中。需要以下haml,记得关闭你的标签,这是最后一行。

\ <div class='class {{if property}} otherClass {{/if}} some '>
-# Normal haml goes here and must not start at the same indent as the above literal
\ </div>

答案 2 :(得分:0)

将所有类移到class属性中,而不是同时使用类简写点表示法和类属性。

.col-md-12.card{ class: "{{toLowerCase level_name}}-master-card" }

变为

%div{ class: "col-md-12 card {{toLowerCase level_name}}-master-card" }

HAML 4.0.7