You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为v-for渲染的输入框添加条件类is-static?

解决方案

你的问题出在:class绑定的目标对象错误——你用answers[answerCount - 1]指向的是数组最新添加的元素,而非当前循环的旧元素。而你在addNewAnswer里已经正确给前一个元素设置了isEntered: true,只需要把类绑定到当前循环项的isEntered属性即可。

步骤1:修改输入框的绑定逻辑

把输入框的:class和@input都改成绑定当前循环的answer对象:

<p class="control">
  <input
      @input="answer.answer = $event.target.value" <!-- 替换原硬编码索引的写法,更可靠 -->
      type="text"
      class="input"
      :class="{ 'is-static': answer.isEntered }" <!-- 直接用当前循环项的isEntered -->
  >
</p>

步骤2:保留原addNewAnswer逻辑(无需修改)

你现有的添加方法已经正确给前一个元素标记isEntered: true,不需要改动:

addNewAnswer() {
  const newAnswer = {
    id: Date.now(),
    answer: '',
    isEntered: false,
  };
  this.answers.push(newAnswer);
  this.answers[this.answerCount - 1].isEntered = true;
  this.answerCount += 1;
},

为什么原来的写法无效?

每次调用addNewAnswer后,answerCount会自增,answers[answerCount - 1]会指向数组最后一个(刚添加的新元素),而这个新元素的isEntered是false,所以旧元素永远不会被加上is-static类。通过绑定当前循环的answer.isEntered,每个输入框都会根据自己对应的对象属性来判断是否添加类,完全匹配你的需求。


内容的提问来源于stack exchange,提问作者McLaren

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 11:55:47