【发布时间】:2018-10-24 06:27:36
【问题描述】:
情况 1 - 我检查了我的个人复选框,我的标题复选框被选中。这是方法 1,效果很好。
相同的代码
index.vue
<VCheckbox
checked={this.checkSelections[idx]}
nativeOnChange={e => {
this.$set(this.checkSelections, idx, e.target.checked);
let allSelected = true;
for (let i = 0; i < this.checkSelections.length; i++) {
allSelected = this.checkSelections[i];
if (!allSelected) break;
}
this.$root.$emit("checkmarkHead", { allSelected });
}}
/>
Head.vue
mounted() {
this.$nextTick(() => {
this.$root.$on("checkmarkHead", ({ allSelected }) => {
console.log("checkmarkHead", allSelected);
this.allSelected = allSelected;
});
}
},
情况 2 -
我检查了我的标题复选框,并且我的所有复选框都被选中了。反之亦然。所以与此对应的方法2也可以正常工作。
相同的代码 -
Head.vue
<HeadItem>
<VCheckbox
checked={this.allSelected}
nativeOnChange={e => {
this.allSelected = e.target.checked;
this.$root.$emit("selectAll", {
allSelected: this.allSelected
});
}}
/>
</HeadItem>
index.vue
mounted() {
this.$nextTick(() => {
this.$root.$on("selectAll", ({ allSelected }) => {
this.checkSelections = Array(this.sortedData.length).fill(allSelected);
});
});
}
问题 - 当我在情况 1 之后执行情况 2 时,相同的方法无法按预期工作。视图未更新。同样,在情况 2 之后执行情况 1 也不起作用。
这里是链接
代码链接 - https://codesandbox.io/s/vmwy3v4203
在处理了所有突变警告等之后,我现在一无所知。
【问题讨论】:
-
有人可以提到问题否决的问题吗?
-
我认为这是您在上面的所有重复文本 :)
-
我注意到,有人在 Codesandbox 的 head.vue 中更改了挂载函数中的行。很奇怪!因此,我所讨论的用例可能无法正常工作。在共享沙盒之前,我应该阅读更多关于编辑权限的信息。
-
如果有人可以投票就好了。现在我确实冻结了这个问题。
-
@HusamIbrahim 什么重复的部分。我交叉检查了任何错误,但仍然无法弄清楚?除非您打算将双关语链接到上一个问题。
标签: javascript vue.js vuejs2