我正在解决如何构建我的车把助手的问题。我有这个特例,我得到了一个包含5个不同符号的列表,我需要将它们应用到元素中。
列表如下:
我已经用这个块解决了它,但每次看到它时我都非常畏缩,并希望将它移动到帮助器中来清理标记。
<div class="case-image" data-img-src="{{image_url}}">
{{#if sign_url }}
<div class="case-sign">{{sign_url}}</div>
{{else}}
{{#if solgt}}
<div class="case-sign">Solgt</div>
{{else}}
{{#if aabenthus}}
<div class="case-sign">Åbent hus</div>
{{else}}
{{#if nyhed}}
<div class="case-sign">Nyhed</div>
{{else}}
{{#if ny_pris}}
<div class="case-sign">Ny pris</div>
{{/if}}
{{/if}}
{{/if}}
{{/if}}
{{/if}}
<a href="{{page_url}}"></a>
</div>
答案 0 :(得分:0)
我猜你想要使用&#34;枚举&#34;键入而不是为每种类型使用5个单独的标志。如果类型为Custom Sign
,则使用customValue
。否则,返回该类型的预定字符串。
把手档案
<div class="case-image" data-img-src="{{image_url}}">
<div class="case-sign">{{sign type customValue}}</div>
<a href="{{page_url}}"></a>
</div>
</div>
在浏览器JS中:
// Enumeration for type of house
var Types = {
'Custom Sign': 1,
'Sold': 2,
'Open house': 3,
'New': 4,
'New price': 5
};
Handlebars.registerHelper('sign', function(type, customValue) {
var ret = '';
if (type === Types['Custom Sign']) {
ret = customValue || '';
} else if (type === Types['Sold']) {
ret = 'Solgt';
} else if (type === Types['Open house']) {
ret = 'Åbent hus'
} else if (type === Types['New']) {
ret = 'Nyhed';
} else if (type === Types['New house']) {
ret = 'Ny pris';
}
return ret;
});
如果您正在使用快递,请以这种方式设置带助手的视图引擎
var exphbs = require('express-handlebars');
var hbs = exphbs.create({
helpers: {
sign: function(type, customValue) {
// same implementation as above
}
},
extname: '.hbs', // optional - edit as desired
layoutsDir: './views/', // optional - edit as desired
defaultLayout: 'layout' // optional - edit as desired
});
app.engine('hbs', hbs.engine);
app.set('view engine', 'hbs');