2016-12-05 3 views
0

Мне нужно оценить выражение, которое я должен добавить.Как оценить выражение в дескрипторах

eAddressType может быть M, E, PH или FX

Что будет лучший способ оценить выражение initData.alternateContactLabelM с использованием комбинации (alternateContactLabel + eAddressType)?

<ux-list-item primary_text="{{initData.alternateContactLabel + this.implEAddressType.eAddressType}}" 
           secondary_text="{{this.value}}" 
           cta="{text: '{{initData.uxButtonChangeLabel}}', onclick: 'alternateContactClick:{{index}},{{this.implEAddressType.eAddressType}}'}" 
           ariaLabel="{{initData.uxButtonChangeLabel}} {{initData.alternateContactLabelPH}}"> 
</ux-list-item> 

В JSON У меня есть:

"initData": { 
    "alternateContactLabelM":"Alternative Mobile Number (SMS)", 
    "alternateContactLabelE":"Alternative Email Address", 
    "alternateContactLabelPH":"Alternative Contact Number", 
    "alternateContactLabelFX":"Alternative Fax", 
} 

ответ

0

Вам нужно будет использовать комбинацию пользовательского помощника, чтобы произвести имя ключа и built-in lookup helper, чтобы получить значение этого свойства на объект initData.

Рули хелперы для струнного concatentation были, несомненно, были написаны раньше, но я буду писать свою собственную простую реализацию здесь:

Handlebars.registerHelper('concat', function() { 
    return Array.prototype.slice.call(arguments, 0, -1).join(''); 
}); 

Этот помощник объединяющее всех параметров, переданных ему для последнего параметра, за исключением, что мы знаете, это объект Handelbars options.

Теперь мы можем использовать этот помощник в нашем шаблоне для динамического возвращения имени ключа. После этого мы будем использовать помощник поиска для нахождения значения initData в этом ключе:

primary_text="{{lookup initData (concat 'alternateContactLabel' implEAddressType.eAddressType)}}" 

Для рабочего примера см this fiddle.

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