亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

選中通過 v-model 綁定到 false 值的 Vue.js 復選框

選中通過 v-model 綁定到 false 值的 Vue.js 復選框

慕神8447489 2022-12-02 10:43:41
我正在嘗試使用類似艾森豪威爾矩陣的待辦事項列表,但我遇到了一個問題,因為 v-bind 和 v-model 是在 false 上觸發的我該如何修復這個錯誤?代碼的靈感來自Vue.js Todo App - Basics - Part 1 <div class="todoList" v-for="(task, index) in todo" :key="task.id">                    <div>                        <div v-if="task.type == 'notimportant'">                            <input v-model="task.completed" type="checkbox" name="" id="" @change="completeTask(task)" />                            <div class="task" v-bind:class="{ completed: task.completed }">                                {{ task.title }}                            </div>                            <button class="removeTask" @click="removeTask(index)">X</button>                        </div>                    </div>                </div>export default {    name: "app",    data() {        return {            newTodo: "",            type: "",            important: "",            id: 3,            todo: [                {                    id: 1,                    title: "Fist Task",                    completed: "false",                    editing: "false",                    type: "urgent",                },                {                    id: 2,                    title: "Second Task",                    completed: "false",                    editing: "false",                    type: "important",                },            ],        };    },
查看完整描述

1 回答

?
慕絲7291255

TA貢獻1859條經驗 獲得超6個贊

問題是你寫的是被評估false為的字符串,你應該知道空字符串、值和被評估為,反之亦然"false"true''0nullundefinedfalse

在此處了解有關類型強制的更多信息

let app = new Vue({

  el: "#app",

  data() {

    return {

      newTodo: "",

      type: "",

      important: "",

      id: 3,

      todo: [{

          id: 1,

          title: "Fist Task",

          completed: false,

          editing: "false",

          type: "urgent",

        },

        {

          id: 2,

          title: "Second Task",

          completed: false,

          editing: "false",

          type: "important",

        },

      ],

    };

  },

  methods: {

    addTask() {

      if (this.newTodo.trim().length == 0) {

        return;

      }

      this.todo.push({

        id: this.id,

        title: this.newTodo,

        completed: "false",

        editing: "false",

        type: this.type,

      });

      this.id++;

      this.newTodo = "";

    },

    removeTask(index) {

      this.todo.splice(index, 1);

    },

    completeTask(task) {

      task.completed = event.target.checked;

    },

  },

  directives: {

    focus: {

      inserted: function(el) {

        el.focus();

      },

    },

  },

})

* {

  margin: 0px;

  box-sizing: border-box;

}


.removeTask {}


.completed {

  text-decoration: line-through;

}


.task {

  text-decoration: 0;

}



/*

.conteiner {

    display: flex;

} /*

.todoBox {

    width: 50%;

    height: 50vh;

    border: 1px solid black;

    text-align: center;

}

.todoList {

    width: 100%;

    height: 100%;

    border: 1px solid red;

}

*/

<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>

<div id="app">

  <div class="conteiner">

    <input placeholder="what we do ?" type="text" v-model="newTodo" />

    <button @click="addTask()">Add</button>

    <select v-model="type">

      <option disabled value="">Select</option>

      <option value="urgent">Urgent</option>

      <option value="noturgent">Not Urgent</option>

      <option value="important">Important</option>

      <option value="notimportant">Not Important</option>

    </select>

    <div class="todoBox">

      <h2>Urgent</h2>

      <div class="todoList" v-for="(task, index) in todo">

        <div>

          <div v-if="task.type == 'urgent'">

            <input v-model="task.completed" type="checkbox" name="" id="" @change="completeTask(task)" />

            <div class="task" v-bind:class="{ completed: task.completed }">

              {{ task.title }}

            </div>

            <button class="removeTask" @click="removeTask(index)">X</button>

          </div>

        </div>

      </div>

    </div>

    <div class="todoBox">

      <h2>Not Urgent</h2>

      <div class="todoList" v-for="(task, index) in todo" :key="task.id">

        <div>

          <div v-if="task.type == 'noturgent'">

            <input v-model="task.completed" type="checkbox" name="" id="" @change="completeTask(task)" />

            <div class="task" v-bind:class="{ completed: task.completed }">

              {{ task.title }}

            </div>

            <button class="removeTask" @click="removeTask(index)">X</button>

          </div>

        </div>

      </div>

    </div>


    <div class="todoBox">

      <h2>Important</h2>

      <div class="todoList" v-for="(task, index) in todo" :key="task.id">

        <div>

          <div v-if="task.type == 'important'">

            <input v-model="task.completed" type="checkbox" name="" id="" @change="completeTask(task)" />

            <div class="task" v-bind:class="{ completed: task.completed }">

              {{ task.title }}

            </div>

            <button class="removeTask" @click="removeTask(index)">X</button>

          </div>

        </div>

      </div>

    </div>

    <div class="todoBox">

      <h2>Not Important</h2>

      <div class="todoList" v-for="(task, index) in todo" :key="task.id">

        <div>

          <div v-if="task.type == 'notimportant'">

            <input v-model="task.completed" type="checkbox" name="" id="" @change="completeTask(task)" />

            <div class="task" v-bind:class="{ completed: task.completed }">

              {{ task.title }}

            </div>

            <button class="removeTask" @click="removeTask(index)">X</button>

          </div>

        </div>

      </div>

    </div>

  </div>

</div>


查看完整回答
反對 回復 2022-12-02
  • 1 回答
  • 0 關注
  • 221 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號