2015-12-03 3 views
0

У меня возникла проблема с выяснением того, как структурировать помощник руля. У меня есть этот специальный случай, когда я получаю список из 5 разных знаков, где мне нужно применить их к элементу.Руль, если еще, если пользовательский помощник

Список выглядит следующим образом:

  1. заказ Войти
  2. Продавец
  3. Открытый дом
  4. Новые
  5. Новая цена на

Я решил его с этим блоком , но я в значительной степени сжимаю каждый раз, когда я смотрю на него и хочу переместить его в помощника t o очистить разметку.

  <div class="case-image" data-img-src="{{image_url}}"> 
       {{#if sign_url }} 
       <div class="case-sign">{{sign_url}}</div> 
       {{else}} 
       {{#if solgt}} 
       <div class="case-sign">Solgt</div> 
       {{else}} 
        {{#if aabenthus}} 
        <div class="case-sign">Åbent hus</div> 
        {{else}} 
        {{#if nyhed}} 
        <div class="case-sign">Nyhed</div> 
        {{else}} 
         {{#if ny_pris}} 
         <div class="case-sign">Ny pris</div> 
         {{/if}} 
        {{/if}} 
        {{/if}} 
       {{/if}} 
       {{/if}} 
       <a href="{{page_url}}"></a> 
      </div> 

ответ

0

Я предполагаю, что вы хотите использовать «перечисляемый» тип вместо 5 отдельных флагов для каждого типа. Если тип Custom Sign, то используется customValue. В противном случае возвращается заданная строка для типа.

Рули файл

<div class="case-image" data-img-src="{{image_url}}"> 
    <div class="case-sign">{{sign type customValue}}</div> 
     <a href="{{page_url}}"></a> 
    </div> 
</div> 

В браузере JS:

// Enumeration for type of house 
var Types = { 
    'Custom Sign': 1, 
    'Sold': 2, 
    'Open house': 3, 
    'New': 4, 
    'New price': 5 
}; 

Handlebars.registerHelper('sign', function(type, customValue) { 
    var ret = ''; 

    if (type === Types['Custom Sign']) { 
     ret = customValue || ''; 
    } else if (type === Types['Sold']) { 
     ret = 'Solgt'; 
    } else if (type === Types['Open house']) { 
     ret = 'Åbent hus' 
    } else if (type === Types['New']) { 
     ret = 'Nyhed'; 
    } else if (type === Types['New house']) { 
     ret = 'Ny pris'; 
    } 

    return ret; 
}); 

Если вы используете экспресс, задать вид двигателя с хелперов таким образом

var exphbs = require('express-handlebars'); 

var hbs = exphbs.create({ 
    helpers: { 
    sign: function(type, customValue) { 
     // same implementation as above 
    } 
    }, 
    extname: '.hbs', // optional - edit as desired 
    layoutsDir: './views/', // optional - edit as desired 
    defaultLayout: 'layout' // optional - edit as desired 
}); 

app.engine('hbs', hbs.engine); 
app.set('view engine', 'hbs'); 
+0

Проблема в том, что я не хочу запускать в json-объект. Я получаю JSON часть что-то вроде этого { custom_sign: '' SOLGT: '' åbenthus: '1' nyhed: '1' ny_pris: ''} –

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