我正在使用把手在服务器端渲染代码(没有角度/余烬)
我还能以某种方式得到类似的东西:
<p dir="auto" {{#if isRTL: class=align-right}}>{{{content}}}</p>
我希望只有在bolean为真时才有CSS类 类似于ember的bind-attr ......
没有它,代码就是一团糟:
{{#if isRTL}}
<p dir="auto" class="align-right>{{{content}}}</p>
{{else}}
<p dir="auto">{{{content}}}</p>
{{#if}}
答案 0 :(得分:8)
没有必要包装整个HTML元素。您可以使用class
子句包装if
。
<p dir="auto" {{#if isRTL}}class="align-right"{{/if}}>{{{content}}}</p>
仅当class="align-right"
真实时,才会呈现isRTL
属性。
此外,由于 Handlebars 是 Mustache 的扩展,您可以使用:
<p dir="auto" {{#isRTL}}class="align-right"{{/isRTL}}>{{{content}}}</p>
答案 1 :(得分:1)
我已经注册了一个帮助程序,以保持清洁,以防有更多的类要添加。
required init(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
xibSetup()
contentTextField.delegate = textFieldDelegate
}
模板:
nil
变量:
/**
* Prints an objects key if the value is true.
* example: {printed:true, pleaseprint:'hello', notprinted:false, noprint:undefined}
*/
handlebars.registerHelper("printif", function(object){
// stringToPrint:boolean
var out = [];
for (var string in object) {
var value = object[string];
if (false===value || null===value || undefined===value) {
continue;
}
out.push(string);
}
return out.join(' ');
});
因此,如果isRTL为true,则输出字符串:
<div class="module {{printif moduleVars}}">
答案 2 :(得分:0)
有了一个助手,我变得干净了。但就我而言,条件是两个变量的真实性。
//js
Handlebars.registerHelper('ternary', function(cond, v1, v2) {
return cond ? v1 : v2;
});
//html
<p dir="auto" class="some-other-class {{ternary isRTL 'align-right' 'align-left'}}">{{{content}}}</p>