У меня есть шаблон со столом, созданный путем итерации по массиву выбранных пользователем компаний, которые хранятся по тикерному символу в атрибуте документа, который называется selections
. Я показываю разные значения, связанные с каждой компанией, в зависимости от другого выбора пользователя, называемого metric
.Переключатель в помощнике шаблона Meteor
У меня возникли проблемы с написанием помощника с инструкцией 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}} {{}} каждый блок в новый шаблон, чтобы увидеть, если это поможет с контекстом данных, но не повезло (и это испортит таблицу).
Я правильно пишу этих помощников? Я также получаю сообщение об ошибке в файле JS, так как reported
- нерешенная переменная, хотя это правильный путь.
спасибо.
EDIT:
Этот помощник работает, не знает, почему другие не делают:
headingNum: function() {
var metric = this.metric;
switch (metric) {
case "EV/EBITDA":
return "EV";
break;
case "Price/Earnings":
return "Price";
break;
default:
return ""
}
}
Не уверен, что я следую. Реактивность в сторону, я не уверен, почему я не могу получить начальное значение. Я добавил дополнительный код к своему сообщению, в котором показан помощник, который у меня есть. Это не извлекает из какой-либо коллекции, но результаты отображаются правильно, не добавляя в HTML-код код. Я бы подумал, что здесь будет работать и оригинальный помощник. – Bren
Также отредактировал мое сообщение - я изначально писал, что не мог получить значение «изменить». Должен был сказать, что я не мог заставить значение «появляться вообще» – Bren