Отсутствует двусторонняя привязка данных и вычисляемое свойство - Riot.js
Несмотря на то, что я знаю, что могу добавить некоторые события, чтобы обновить некоторые из моих переменных, используя "event.target", как можно обновить среднее значение при изменении некоторых баллов, учитывая приведенный ниже пример?
<my-tag>
<virtual each="{ criterias }">
<label for="{ name }">{ name }:</label>
<input type="number" min="0" max="10" value="{ score }" name="{ name }" id="{ name }">
</virtual>
<p>Average: { average }</p>
<script>
this.criterias = [
{
name: 'Plot',
score: 8
},
{
name: 'Audio',
score: 9
},
{
name: 'Graphics',
score: 7
}
]
this.average = this.criterias.reduce((a, b) => a + b['score'], 0) / this.criterias.length
</script>
</my-tag>
1 ответ
this.update()
вызывается после любого события изменения, как onclick
, oninput
и т.д. Я полагаю, что ваше среднее значение может быть вычислено внутри функции обновления, например
this.on('update', function(){
this.average = this.criterias.reduce((a, b) => a + b['score'], 0);
});