2014-10-01 5 views
0

Я создал пользовательский вспомогательный блок для Meteor 0.9.3, используя информацию по следующему адресу: https://github.com/meteor/meteor/wiki/Using-Blaze#new-pattern-for-defining-custom-block-helpersБолее элегантный помощник для Meteor 0.9.3 шаблоны

Он может быть использован в качестве шаблона Spacebars следующим образом:

{{#ifEqual value1="stringOrNumber_1" value2="stringOrNumber_2"}} 
    <h1>The values ARE equal!</h1> 
{{else}} 
    <h1>The values are NOT equal!</h1> 
{{/ifEqual}} 

Вот код:

<template name="ifEqual"> 
    {{#if isEqual value1 value2}} 
    {{> UI.contentBlock}} 
    {{else}} 
    {{> UI.elseBlock}} 
    {{/if}} 
</template> 

Template.ifEqual.isEqual = function (value1, value2) { 
    return value1 === value2; 
}; 

Мой вопрос:

Есть ли способ сделать это менее неуклюжим?

Я предпочел бы код, который может быть использован в качестве шаблона, как так:

{{#ifEqual "stringOrNumber_1" "stringOrNumber_2"}} 
... 

ответ

1

Я бы зарегистрировать глобальный equals помощника:

Template.registerHelper('equals', function(value1, value2){ 
    return value1 === value2 
}) 

, а затем использовать его как это:

{{#if equals "abc" "abc"}} 
    <p>They're equal :)</p> 
{{else}} 
    <p>They're not equal :(</p> 
{{/if}} 

Возможно, вас заинтересует underscore-helper вместо этого, вам не нужно определять этот (и аналогичный) помощник самостоятельно.

+0

Очень ценим! Только то, что я искал. Кроме того: пакет подчеркивания-помощника выглядит полезным, хотя и не для простой функции сравнения строк, подобной этой. –