2012-07-31 4 views
1

Мне интересно, можно ли сделать что-то подобное с помощью возможного оператора AND в руле: Если нет, то лучший способ сделать тот же результат.И заявления с использованием Handlebar


Это Javascript контекст:

{ 
    title: "My first post!", 
    author: { 
    firstName: "Charles", 
    lastName: "Jolley" 
    } 
} 

Это HTML контекст:

<div class="entry"> 
    {{#if firstName && lastName}} 
    <h1>{{firstName}} {{lastName}}</h1> 
    {{/if}} 
</div> 

ответ

2

Нет, родной {{#if}} не понимает, что синтаксис. Тем не менее, вы можете легко add your own helper для чего-то подобного, и вы можете даже работать с неизвестным количеством аргументов своему помощнику, если вы не против возиться с arguments.

Единственная сложная часть, отмечающая, что аргумент блока помощнику всегда наступает последним.

Что-то простое, как это будет делать трюк:

Handlebars.registerHelper('if_all_true', function() { 
    var args = Array.prototype.slice.call(arguments); 
    var block = args.pop(); 
    for(var i = 0; i < args.length; ++i) 
     if(!args[i]) 
      return block.inverse(this); 
    return block(this); 
}); 

Демо: http://jsfiddle.net/ambiguous/jMLcZ/

Смежные вопросы