Софтуерно Инженерство
Loading...
+ Нов въпрос
TeodorDimitrov89 avatar TeodorDimitrov89 266 Точки

[JS Web] Handlebars

Здравейте,

Имам проблем с handlebars темплейта, а той е следния:

Опитвам се да направя много проста if-проверка от сорта ако а === b, но hanldebars-a не го поддържа.

Инсталирах си допълнителен модул handlebars-helpers, но не успях да я регистрирам и да я използвам.

Молбата ми е, ако някой знае как се прави да ми помогне.

Благодаря

0
Module: JS Web 08/06/2017 22:20:32
RoYaL avatar RoYaL Trainer 6845 Точки

Здравей,

Това, което се опитваш да направиш е строго против философията на подобни template engine-и. Преосмисли дали не можеш тази логика да я изнесеш във викащата шаблона функция.

Ако все пак много ти се налага, можеш да си регистрираш простичък собствен помощник чрез функцията registerHelper().

Handlebars.registerHelper('if', function(a, b, options) {
    if(a === b) {
        return options.fn(this);
    }
    return options.inverse(this);
});

Разбира се, подобна помощна функция ще работи само за твоя случай с проверка за равенство.

{{#if a b}}
    <h1> Good! A is equal to B </h1>
{{/if}}

Ако искаш да правиш проверки с функции (equals, etc...) или други оператори, ще трябва да подаваш параметъра за оператор или функция като низ или нещо, което може да се вика (callable).

Handlebars.registerHelper('if', function(a, op, b, options) {
    if (op == '==' && a == b) return options.fn(this);
    if (op == '===' && a === b) return options.fn(this);    
    if (op == '>' && a > b) return options.fn(this);
    if (op == '<' && a < b) return options.fn(this);
    // etc..
    if (typeof op == 'function' && op(a, b) || op.apply(a, b)) return options.fn(this);

    return options.inverse(this);
});

И някакво подобно използване

{{#if a '>' b}}
    <h1> Good! A is greater than B </h1>
{{/if}}

Но наистина помисли дали не може тази логика да се измести там, където й е мястото :)

Успех!

2
03/06/2017 16:13:12
kayleig avatar kayleig -2 Точки

When I believed in forever, and everything would stay the same
Now my heart feel like December when somebody say your name.
 surviv io

-2
advydv avatar advydv 0 Точки

I also faced the same problem thank you for answering.  i want to wish happy Holi in advance 

0