У меня проблема с каждым циклом в html-коде
У меня проблема с циклом foreach в представлении html //. Я пытаюсь изменить цвет значка в зависимости от введенного веса. Теперь код работает идеально, когда я беру его из foreach в html, но он работает только для последнего введенного веса, а когда он находится в цикле foreach, значок печатается для каждой строки, просто не будет отображать никакого цвета. Кто-нибудь знает, как я могу это сделать, и спасибо за ваше время.
/////controller
index(request, response) {
const memberlistId = request.params.id;
const loggedInUser = accounts.getCurrentUser(request);
const viewData = {
title: 'Memberlist',
memberlist: memberStore.getMemberlist(loggedInUser.id),
bmi: memberStore.getBmi(loggedInUser.id),
weightClass: memberStore.getWeightClass(loggedInUser.id),
idealBodyWeight: memberStore.isIdealBodyWeight(loggedInUser.id),
getTrend: memberStore.getTrend( loggedInUser.id),
timeStamp: memberStore.timestamp(),
};
//////model
getTrend(id) {
const memberassessment = this.getMemberlist(id);
const assess = memberassessment.assessments;
if (assess.length > 1) {
for (let i = 0; i < assess.length; i++) {
if (assess[assess.length - 2].weight > assess[assess.length - 1].weight) {
const result = "green";
return result;
} else {
const result = "red";
return result;
}
}
}
},
// The view where i'm having the problem getting icon to change colour
<tbody>
{{#each memberlist.assessments}}
<tr>
<td>{{timeStamp}}</td>
<td>{{weight}}
</td>
<td> {{chest}}
</td>
<td> {{thigh}}
</td>
<td> {{upperArm}}
</td>
<td> {{waist}}
</td>
<td> {{hips}}
</td>
<td>
</td>
<td>
<a href="/memberlist/{{../memberlist.id}}/deleteassessment/{{id}}" class="ui tiny red button">Delete
<i class="icon trash"></i></a>
</td>
<td>
<a class="ui {{getTrend}} tag label"></a> //problem here keeps repeating and wont change colour
</td>
</tr>
{{/each}}
</tbody>
Ожидаемый результат: значок изменит цвет в цикле foreach для каждого введенного веса.
2 ответа
if (assess.length > 1) {`
for (let i = 0; i < assess.length; i++) {
if (assess[assess.length - 2].weight > assess[assess.length - 1].weight) {
let result = "green";
return result;
} else {
let result = "red";
return result;
}
}
}
Я не совсем понимаю, чего вы пытаетесь достичь, но вы просили код, так что вот он. Что я сделал: использовалi
в состоянии; приращениеi
каждый раз его вызывают. Я включил ответ Мохита и использовалlet
вместо того const
.
//////model
var i = 1;
function getTrend(id) {
const memberassessment = this.getMemberlist(id);
const assess = memberassessment.assessments;
if (i>=2 && assess.length >= i) {
if (assess[i - 2].weight > assess[i - 1].weight) {
let result = "green";
return result;
} else {
let result = "red";
return result;
}
}
++i;
}
Я думаю, вы можете проверить, находятся ли сборки в порядке возрастания или убывания. Для этого код будет таким:
//////model
function getTrend(id) {
const memberassessment = this.getMemberlist(id);
const assess = memberassessment.assessments;
for(i=2; assess.length >= i; ++i) {
if (assess[i - 2].weight > assess[i - 1].weight) {
//green
} else {
let result = "red";
return result;
}
}
let result = "green";
return result;
}