У меня есть шаблон с таблицей, созданной путем перебора массива выбранных пользователем компаний, которые хранятся по символу тикера в атрибуте документа с именем selections
. Я показываю разные значения, связанные с каждой компанией, в зависимости от выбора пользователя, называемого metric
.
У меня возникли проблемы с написанием помощника с оператором if/else, необходимым для изменения значения в зависимости от выбора пользователя. В приведенном ниже коде headingNum
и headingDen
отображаются правильно. То же самое и с companyName
, который связан с индивидуальным выбором. Если я заменю valuationNum
на this.reported.capTable.enterpriseValue
, появится правильное значение. Но я не могу заставить его появиться при использовании помощника.
<template name="Table">
<div>
<table>
<thead>
<tr>
<th>Company</th>
<th>{{headingNum}}</th>
<th>{{headingDen}}</th>
</tr>
</thead>
<tbody>
{{#each selections}}
<tr>
<td>{{companyName}}</td>
<td>${{valuationNum}}</td>
<td>${{valuationDen}}</td>
</tr>
{{/each}}
</tbody>
</table>
</div>
</template>
JS-файл
var metric = this.metric;
var period = this.period;
Template. Table.helpers({
selections: function () {
var selected = this.selections;
return Companies.find({ticker: {$in: selected}})
},
headingNum: function () {
switch (metric) {
case "A":
return "EV";
break;
case "B":
return "Price";
break;
default:
return "EV"
}
},
valuationNum: function() {
switch (metric) {
case "A":
return this.reported.capTable.enterpriseValue;
break;
case "B":
return this.reported.capTable.lastClose;
break;
default:
return ""
}
}
});
Я попытался разбить блок {{#each}}{{each}} на новый шаблон, чтобы посмотреть, поможет ли это с контекстом данных, но безуспешно (и это портит таблицу).
Я правильно пишу эти помощники? Я также получаю сообщение об ошибке в файле JS, в котором говорится, что reported
является неразрешенной переменной, хотя это правильный путь.
Спасибо.
РЕДАКТИРОВАТЬ:
Этот помощник работает, не уверен, почему другой не работает:
headingNum: function () {
var metric = this.metric;
switch (metric) {
case "EV/EBITDA":
return "EV";
break;
case "Price/Earnings":
return "Price";
break;
default:
return ""
}
}