Bạn không thể thực hiện việc này với trình trợ giúp tùy chỉnh vì Người trợ giúp if-ish chỉ hiểu hai phần: phần "nếu" và phần "khác". Bạn có thể lồng những thứ mặc dù:
{{#if type.one}}
do something ... IF
{{else}}
{{#if type.two}}
do something ... ELSE IF
{{else}}
{{#if type.three}}
...
{{else}}
...
{{/if}}
{{/if}}
{{/if}}
Điều đó sẽ nhanh chóng trở nên khó chịu do đó bạn có thể không muốn làm điều đó. Cách tiếp cận tốt hơn (như thường lệ với Handlebars) là đẩy logic vào JavaScript của bạn sao cho tối đa một trong số type.one
, type.two
, type.three
, ... sẽ là đúng; sau đó bạn có thể:
{{#if type.one}}
...
{{/if}}
{{#if type.two}}
...
{{/if}}
{{#if type.three}}
...
{{/if}}
Nếu bạn có rất nhiều lựa chọn cho type
hoặc nếu các cơ quan trong {{#if}}
của bạn rất phức tạp, bạn có thể chuyển sang partials. Bạn sẽ phải thêm một trình trợ giúp tùy chỉnh để xây dựng một tên một phần dựa trên biến mẫu mặc dù; một cái gì đó như thế này:
Handlebars.registerHelper('show_type', function(type) {
var types = ['one', 'two', 'three'];
var partial;
for(var i = 0; i < types.length; ++i) {
if(!type[types[i]])
continue;
partial = '_partial_' + types[i];
break;
}
if(partial)
return Handlebars.partials[name](this);
else
return '';
});
và sau đó, giả sử partials của bạn đều đã đăng ký và liên tục được đặt tên, bạn có thể nói:
{{show_type type}}
Nguồn
2012-10-31 19:31:40
này nên là câu trả lời 'mới' chấp nhận vào năm 2016. – Jeff