Prestaul является хорошим решением, но я думал, что ответить и дать вам немного больше понимания того, что произошло.
Проблема заключается в том, что переменные, созданные внутри цикла each
, недоступны вне цикла. Ваш код будет выглядеть следующим образом в JavaScript:
bagItems.forEach(function(item) {
var total = total + item.realprice;
});
write("<p>" + total + "</p>");
Я предполагаю, что вы знакомы с переменной обзорного JS, но в основном var
s, определенные внутри функции не доступны за ее пределами.
Вторая проблема заключается в том, что вы определяете тотал как равный себе + что-то еще, но вы никогда не дадите ему начальное значение, поэтому оно будет undefined + item.realprice
, которое равно NaN
.
Вот альтернативное решение, которое решает обе эти вопросы:
- var total = 0
each item in bagItems
- total += item.realprice
p= total
глупо мне, что имеет смысл: P – jamcoupe
@adam, я согласен, что в целом вы хотите, чтобы избежать манипуляций с данными в шаблонах, но я думаю, что связанная с отображением логика принадлежит шаблонам, а не вашим контроллерам, так же, как бизнес-логика не принадлежит вашим шаблонам. Я думаю, что это хороший пример того случая, когда данные, необходимые для отображения, уже существуют (сумма не является манипуляцией с данными), и вашему контроллеру не нужно структурировать данные, чтобы разместить то, как вы хотите отображать его сейчас. Следующий шаг - это контроллеры, генерирующие имена классов html для элементов. – Prestaul
@adam, я согласен, что бизнес-логика и манипуляция данными не входят в шаблоны. Надеюсь, было ясно, что я говорил, что я думаю, что этот идеал можно считать слишком далеко. Логическим завершением этой линии мыслей является Усы. Я понимаю, что есть много пуристов, которые считают, что Mustache (без логических шаблонов) является воплощением идеала, но я считаю, что многие люди считают, что шаблоны без логики фактически заставляют их ставить логику, которая принадлежит шаблонам в другом месте. – Prestaul