Такой код может сделать мой html некрасивым и запутанным.

{{#if user.facebook.id}} 
    <img class="img-rounded" src="https://graph.facebook.com/{{user.facebook.id}}/picture"/>
{{else}} 
    <img class="img-rounded" src="http://www.gravatar.com/avatar/{{user.local.gravatar}}?s=50"/> 
{{/if}}

В javascript я мог

var picture;

if(user.facebook.id) {
     picture = '<img class="img-rounded" src="https://graph.facebook.com/'+user.facebook.id+'/picture"/>';
} else {
     picture = '<img class="img-rounded" src="http://www.gravatar.com/avatar/'+user.local.gravitar+'?s=50"/>';
}

return picture;

Вы знаете что-то подобное, а затем звоните picture, и он знает, что делать. Есть ли способ сделать что-то подобное в руле. Раньше я делал что-то подобное в underscore.js.

Нужно ли мне создавать вспомогательный метод руля или есть что-то встроенное, что я могу использовать?

0
Michael Joseph Aubry 6 Апр 2014 в 03:05

1 ответ

Лучший ответ

Вспомогательный метод Handlebar будет вашим лучшим выбором, если вам не нравится версия Html.

{{checkFacebookId user.facebook.id user.local.gravatar}} 

Handlebars.registerHelper('checkFacebookId', function (id, gravatar) {
    var picture = '';
    if (id) {
         picture = '<img class="img-rounded" src="https://graph.facebook.com/' + id + '/picture"/>';
    } else {
         picture = '<img class="img-rounded" src="http://www.gravatar.com/avatar/' + gravatar + '?s=50"/>';
    }
    return new Handlebars.SafeString(picture);
});
1
ckross01 8 Апр 2014 в 18:23
Думаю, я подумаю об использовании этого метода, я мог бы использовать его несколько раз. Я просто не знаю, где разместить его в структуре моего приложения, кажется, он будет располагаться в случайном месте.
 – 
Michael Joseph Aubry
8 Апр 2014 в 23:47
Честно говоря, я храню его в общем файле помощников, который содержит помощников панели управления для конкретных страниц. Может быть, не самый лучший, но пригодится для повторного использования.
 – 
ckross01
9 Апр 2014 в 00:37