javascript - 在 VUE js 中获取数组中数据的索引

标签 javascript arrays sorting vue.js vuejs2

我想在调用特定方法时更改任务的状态。但问题是我无法获取数组特定项目的索引来更改其状态。 这是我的 HTML:

<div class="main" id="my-vue-app">
    <ul>
        <li v-for="task in completeTask">
            {{ task.description }} <button @click="markIncomplete">Mark as Incomplete</button>
        </li>

    </ul>
    <ul>
        <li v-for="task in incompleteTask">
            {{ task.description }} <button @click="markComplete">Mark as Complete</button>

        </li>
    </ul>
</div>

这是我的 Vue:

<script>
    new Vue(
        {
            el: '#my-vue-app',
            data:
            {
                tasks: [
                {description:'go to market', status: true},
                {description:'buy book', status: true}, 
                {description:'eat biriani', status: true}, 
                {description:'walk half kilo', status: false}, 
                {description:'eat icecream', status: false}, 
                {description:'return to home', status: false}
                ]
            },
            computed: 
            {
                incompleteTask()
                {
                    return this.tasks.filter(task => ! task.status);
                },
                completeTask()
                {
                    return this.tasks.filter(task => task.status);
                }
            },
            methods: 
            {
                markComplete()
                {
                    return this.task.status = true;

                },
                markIncomplete()
                {
                    return this.task.status = false;
                }
            }
        }
    )
</script>

我需要使用 markComplete()markIncomplete() 但问题是我找不到获取当前元素索引的方法来更改它状态。

最佳答案

您可以通过 declaring a second argument at the v-for 获取索引:

<li v-for="(task, index) in incompleteTask">
    {{ task.description }} <button @click="markComplete(index)">Mark as Complete</button>
</li>
    methods: 
    {
        markComplete(index)
        {
            return this.tasks[index].status = true;

        },

但是,一个可能更简单的替代方法是简单地将 `task` 作为参数传递**:
<li v-for="task in incompleteTask">
    {{ task.description }} <button @click="markComplete(task)">Mark as Complete</button>
</li>
    methods: 
    {
        markComplete(task)
        {
            return task.status = true;

        },

关于javascript - 在 VUE js 中获取数组中数据的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49697259/

相关文章:

javascript - 如何用特定模式划分数组数组

javascript - 自定义 Amcharts 的问题

c - 数组的整数子集的总和,获取所有结果而不是第一个

arrays - 获取 JSON 数据以从数组填充 TableView

JQuery 表排序器 : How to show the arrows on one column only

javascript - 使用 angular 从指令中的 API 调用更新组件数据

c# - 在 ASP.NET 网页中打开新选项卡

原型(prototype)化为数组的 Javascript 对象成员被所有类实例共享

c++ - 从文件中读取字符串并排序

C- 对指向可以为正数或负数的整数的指针数组进行排序