- 53
- 0
一开始时候正常的,点击添加按钮,多做几次删除和保存操作,就有一定的概率出现添加按钮无效。实际数据已经push进去,只是不显示我尝试过把getItemData()中的this.items = data || [];改成this.$set(this,"items",data);在push之后调用this.$forceUpdate()也无效完整代码如下<template> <el-dialog v-el-drag-dialog class="small-padding" :visible.sync="dialogVisible" :close-on-click-modal="false" :title="model.name+'-对接企业'" width="500px" top="3vh"> <div v-loading="contentLoading"> <el-button type="primary" @click="addItem">添加</el-button> <el-form class="form" label-width="100px"> <div v-for="(item,itemIndex) in items" :key="item.id||item.vueKey" style="display: flex;align-items: center"> <div class="item"> <el-form-item label="企业名称"> <vm-select-input :value="item.companyName" @select="$refs.selectCom.open(null,item)"></vm-select-input> </el-form-item> <el-form-item v-for="(param,index) in item.params" :key="index" :label="param.key"> <el-input v-model="param.value"></el-input> </el-form-item> </div> <div> <el-button type="danger" @click="deleteItem(itemIndex)">删除</el-button> <el-button type="primary" style="display: block;margin: 5px 0 0 0" @click="saveItem(item)"> 保存 </el-button> </div> </div> <company-select ref="selectCom" @select="onSelectCom"></company-select> </el-form> </div> </el-dialog></template><script> import CompanySelect from "@/views/company/CompanySelect.vue"; export default { components: {CompanySelect}, data() { return { dialogVisible: false, contentLoading: false, model: { id: "", name: "", params: [], doc: "", }, items: [], }; }, methods: { open(id) { this.model.id = id; this.dialogVisible = true; this.getData(); }, getData() { this.contentLoading = true; this.$http .get("integrations/" + this.model.id) .then(({data}) => { this.$assign(this.model, data); this.getItemData(); }); }, getItemData() { this.contentLoading = true; this.$http .get("integrationItems?integrationId=" + this.model.id) .then(({data}) => { this.contentLoading = false; this.items = data || []; }); }, onSelectCom(row, item) { item.companyId = row.id; item.companyName = row.name; }, addItem() { let params = this.model.params.map(item => { return { key: item, value: "", }; }); console.log(params); this.items.push({ vueKey: this.$util.genKey(), integrationId: this.model.id, companyId: "", companyName: "", params: params, }); }, deleteItem(index) { let itemId = this.items[index].id; if (itemId) { this.$confirm("确定删除吗?", "提示", {type: "warning"}).then(() => { this.$http.delete("integrationItems", itemId).then(() => { this.$message.success("删除成功"); this.getItemData(); }); }); } else { this.items.splice(index, 1); } }, saveItem(item) { this.$http.save("integrationItems", item).then(() => { this.$message.success("保存成功"); this.getItemData(); }); }, }, };</script><style lang="scss" scoped>.form { margin-top: 5px;}.item { flex: 1; background-color: #fcfcfc; padding: 20px 15px 10px 10px; margin-bottom: 10px; border: 1px solid #e8e8e8; border-radius: 3px; margin-right: 5px;}</style>
0
打赏
收藏
点击回答
- 共 0 条
- 全部回答
-
劳资单身照样嗨ε 普通会员 1楼
在Vue 2.6.11版本中,数组push操作并不会直接刷新界面,而是返回一个数组,你可以通过修改元素的索引来刷新界面。
例如,如果你有一个数组,你想要将某个元素添加到数组的末尾,你可以这样做:
js let arr = [1, 2, 3]; arr.push(4); // push操作返回一个数组 console.log(arr); // 输出:[1, 2, 3, 4]如果你想直接刷新界面,你可以通过触发一个视图更新事件,如
v-show或v-equal,然后在事件处理函数中清空数组。但是这种方法通常并不推荐,因为这可能会导致性能问题。例如,如果你有一个数组,你想要立即清空它,你可以这样做:
js let arr = [1, 2, 3]; arr.splice(0, 3); // 清空数组 console.log(arr); // 输出:[1, 2, 3]以上就是在Vue 2.6.11版本中数组push后界面不刷新的解决方案。
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
