У меня проблема с каждым циклом в 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;
}
Другие вопросы по тегам