RError.com

RError.com Logo RError.com Logo

RError.com Navigation

  • 主页

Mobile menu

Close
  • 主页
  • 系统&网络
    • 热门问题
    • 最新问题
    • 标签
  • Ubuntu
    • 热门问题
    • 最新问题
    • 标签
  • 帮助
主页 / 问题 / 652307
Accepted
Алексей Лапин
Алексей Лапин
Asked:2020-04-11 19:04:01 +0000 UTC2020-04-11 19:04:01 +0000 UTC 2020-04-11 19:04:01 +0000 UTC

vue js 不从 $data 更新参数

  • 772

大家好。帮助vuejs。任务的本质:有一个网格,在每个单元格中都有一个按钮“添加元素”,按下它会弹出一个带有选择的模式窗口。在模态中选择所需的选项后。窗口中,单击“添加”按钮,具有所选元素名称的 div 应出现在同一单元格中(简而言之)

它是如何工作的:网格、单元格、按钮、模态。窗口是一个单独的组件。网格有一个数组,其中包含整个网格的所有添加项。每个单元格都有自己的 id,通过它进行添加。在模态。窗口,单击按钮会触发一个事件,它会触发按钮的事件,单元格的按钮,网格的单元格,网格将所有添加元素的完整列表传递给单元格:)

代码片段:

网格:

<template>
<div>
    {{ elements }}
    <table class="table table-bordered">
        <tr>
            <cell id="one" :onAdded="addElement" :elements="elements"></cell>
            <cell id="two" :onAdded="addElement" :elements="elements"></cell>
        </tr>
    </table>
</div>
</template>

<script>
export default {
    data: function() {
        return {
            elements: {}
        };
    },
    methods: {
        addElement: function(cellId, name) {
            console.log('В ячейку', cellId, 'нужно добавить элемент', name);
            let elements = this.elements;
            if(typeof elements[cellId] === 'undefined') elements[cellId] = [];
            elements[cellId].push({name});
            this.$set(this.elements, elements);
        }
    }
</script>

细胞:

<template>
<td>
    <div class="panel panel-default"
         v-if="typeof elements[id] !== 'undefined'"
         v-for="element in elements[id]"
    >
        {{ element.name }}
    </div>
    <add-element-button :id="id" :onSuccess="addElement"/>
</td>
</template>

<script type="text/javascript">
export default {
    props: {
        id: {type: String, required: true},
        onAdded: {type: Function, required: true},
        elements: {type: Object, default: function() {
            return {};
        }}
    },
    methods: {
        addElement: function(id, name, params) {
            this.onAdded(id, name);
        }
    }
}
</script>

此代码仅在第一次时有效。在网格的开头,我显示了完整的元素列表。起初,显示空,在第一次添加后,元素出现。之后添加的所有内容都不包含在数组中。

即代码: console.log('To the cell', cellId, '需要添加一个元素', name); from the grid 始终正确执行,但元素不会在页面上重绘。告诉我如何强制 vue 重绘所有元素,或者你可能不需要使用 $set(...) 但其他东西?我已经打破了我的头。提前致谢

vue.js
  • 1 1 个回答
  • 10 Views

1 个回答

  • Voted
  1. Best Answer
    Алексей Лапин
    2020-04-11T19:49:18Z2020-04-11T19:49:18Z

    事实证明,整个问题都出在对象实例上。当您将“重复”对象分配给同一对象时,什么也不会发生。追踪。代码将不起作用:

    let a = this.b;
    a.key = 'new_value';
    this.$set(this.b, a);
    

    b 参数仍然不会改变。相反,您需要创建一个新对象(克隆当前对象):

    let a = {};
    // Здесь запускаем for и восстанавливаем экземпляр this.b в переменной a.
    a.key = 'new_value';
    this.$set(this.b, a);
    

    第二个示例将正常工作。

    • 2

相关问题

  • Vue js 循环使用组件

Sidebar

Stats

  • 问题 10021
  • Answers 30001
  • 最佳答案 8000
  • 用户 6900
  • 常问
  • 回答
  • Marko Smith

    Python 3.6 - 安装 MySQL (Windows)

    • 1 个回答
  • Marko Smith

    C++ 编写程序“计算单个岛屿”。填充一个二维数组 12x12 0 和 1

    • 2 个回答
  • Marko Smith

    返回指针的函数

    • 1 个回答
  • Marko Smith

    我使用 django 管理面板添加图像,但它没有显示

    • 1 个回答
  • Marko Smith

    这些条目是什么意思,它们的完整等效项是什么样的

    • 2 个回答
  • Marko Smith

    浏览器仍然缓存文件数据

    • 1 个回答
  • Marko Smith

    在 Excel VBA 中激活工作表的问题

    • 3 个回答
  • Marko Smith

    为什么内置类型中包含复数而小数不包含?

    • 2 个回答
  • Marko Smith

    获得唯一途径

    • 3 个回答
  • Marko Smith

    告诉我一个像幻灯片一样创建滚动的库

    • 1 个回答
  • Martin Hope
    Air 究竟是什么标识了网站访问者? 2020-11-03 15:49:20 +0000 UTC
  • Martin Hope
    Алексей Шиманский 如何以及通过什么方式来查找 Javascript 代码中的错误? 2020-08-03 00:21:37 +0000 UTC
  • Martin Hope
    Qwertiy 号码显示 9223372036854775807 2020-07-11 18:16:49 +0000 UTC
  • Martin Hope
    user216109 如何为黑客设下陷阱,或充分击退攻击? 2020-05-10 02:22:52 +0000 UTC
  • Martin Hope
    Qwertiy 并变成3个无穷大 2020-11-06 07:15:57 +0000 UTC
  • Martin Hope
    koks_rs 什么是样板代码? 2020-10-27 15:43:19 +0000 UTC
  • Martin Hope
    user207618 Codegolf——组合选择算法的实现 2020-10-23 18:46:29 +0000 UTC
  • Martin Hope
    Sirop4ik 向 git 提交发布的正确方法是什么? 2020-10-05 00:02:00 +0000 UTC
  • Martin Hope
    faoxis 为什么在这么多示例中函数都称为 foo? 2020-08-15 04:42:49 +0000 UTC
  • Martin Hope
    Pavel Mayorov 如何从事件或回调函数中返回值?或者至少等他们完成。 2020-08-11 16:49:28 +0000 UTC

热门标签

javascript python java php c# c++ html android jquery mysql

Explore

  • 主页
  • 问题
    • 热门问题
    • 最新问题
  • 标签
  • 帮助

Footer

RError.com

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

帮助

© 2023 RError.com All Rights Reserve   沪ICP备12040472号-5