debugging 当从列表中删除一个` `时< li>,我错误地将样式应用到下一个`< li>`,如何修复这个问题?

dwbf0jvd  于 2023-08-06  发布在  其他
关注(0)|答案(2)|浏览(79)

我在Vuejs做一个待办事项列表。我几乎完成了与行为。但是,当我从列表中删除一个<li>时,我将类.completed放入了下一个<li>中。为什么会这样?
这是一个JS Fiddle示例:https://jsfiddle.net/mercenariomode/34q6gxt1/

db2dz4w8

db2dz4w81#

这是因为你的click事件传播到了span的父元素,也就是li,因此active被触发了。所以为了防止这种情况,你需要使用stop来阻止你的事件进一步传播。详情请阅读

<span v-on:click.stop="deleteTodo(index)">{{ todo.delete }}</span>

字符串
https://jsfiddle.net/RiddhiParekh/k3b0umL1/

gajydyqb

gajydyqb2#

你也可以尝试这个,我认为这会看起来更好,即分开的交叉符号和任务文本的跨度。

<div id="app">
    <h1>{{ message }}</h1>
    <form v-on:submit.prevent="addNewTodo">
      <input id="input-value" type="text" v-model="task">
      <button type="submit">Add todo</button>
    </form>

    <ul>
      <li v-for="(todo, index) in todos">
      <span :class="{ completed: todo.isActive }" @click="$set(todo, 'isActive', !todo.isActive)">
      {{ todo.task }}</span> <span v-on:click="deleteTodo(index)">{{ todo.delete }}</span>
      </li>
    </ul>
  </div>

字符串

相关问题