2013-05-28 3 views
9

Я хочу, чтобы мой шаблон Рули, который служил для клиента, чтобы выглядетьРули условное проверяется свойство из шаблона Джейд

<input type='checkbox' checked={{isChecked}}> 

или

<input type='checkbox' {{#if isChecked}}checked{{/if}}> 

Как я могу написать шаблон Джейд, который будет компилировать к этому? от их документов, проверенное имущество будет включено, если назначенное значение truthy, но на самом деле не включает в себя стоимость:

input(type="checkbox", checked="{{isChecked}}") 

компилирующегося в

<input type='checkbox' checked> 

Я также попытался:

input(type="checkbox", checked={{isChecked}}) 

и

input(type="checkbox", {{#if isChecked}}checked{{/if}}) 

, который просто не компилируется, что я понимаю

ответ

15

ну попробуйте прямо в вашем шаблоне нефрита.

<input type='checkbox' {{#if isChecked}}checked{{/if}}> 

должен оставаться в таком же формате.

capture

8

Я хотел бы предложить создать более общий помощник, который впоследствии можно повторно использовать легко

Handlebars.registerHelper("checkedIf", function (condition) { 
    return (condition) ? "checked" : ""; 
}); 

Затем, вы можете использовать его в любом из ваших шаблонов:

<script id="some-template" type="text/x-handlebars-template"> 
    ... 
    <input type="checkbox" {{checkedIf this.someField}} /> 
    ... 
</script> 

Этот будет отображаться как

<input type="checkbox" checked /> 

or... 

<input type="checkbox" /> 

в зависимости от значения someField (поле объекта, сопоставленного с шаблоном)

+1

Как вы проверяете отрицательный результат, например, если он установлен в false? –

+1

@dvidsilva Я не использовал Handlebars в течение длительного времени ... это работает? '{{checkedIf! this.someField}}'? – sports

+1

На самом деле, мне не пришлось писать checkedIf и checkedIfNot: O –

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