vue.js - Vue中数据更改后UI未更新
问题描述
当我直接使用数组(不使其成为对象的一部分)时,它按预期工作正常,下面是代码,
<span class="tagSpan" v-else-if="row.label == 'Tags'">
<span v-if="aTags.length" v-for="(tag, tagIndex) in aTags" class="input-tag tagSpan">{{tag}}
<span class="close-x" @click="aTags.splice(tagIndex, 1)">❌</span>
</span>
<input v-on:keyup.186="onTagAdd(rowIndex)" type="text" class="form-control form-control-sm col-3" :disabled="!row.editable" v-model="row.value" >
</span>
现在我优化了代码并使 aTags 成为 oDyData 对象的一项并更改了代码如下
<span class="tagSpan" v-else-if="row.label == 'Tags'">
<span v-if="oDyData.aTags && oDyData.aTags.length" v-for="(tag, tagIndex) in oDyData.aTags" class="input-tag tagSpan">{{tag}}
<span class="close-x" @click="oDyData.aTags.splice(tagIndex, 1)">❌</span>
</span>
<input v-on:keyup.186="onTagAdd(rowIndex)" type="text" class="form-control form-control-sm col-3" :disabled="!row.editable" v-model="row.value" >
</span>
我的删除标签 '@click="aTags.splice(tagIndex, 1)' 的功能不像以前那样工作,它从对象的数组中删除了项目,但 UI 没有更新,我还在 vue 中进行了交叉检查开发组件和数组正在更新,但 UI 不会重新渲染(更新),直到 UI 发生任何其他更改(如果我在输入中输入内容或单击某处,它会发生更改)。下面是相同的屏幕截图。
如何解决这个问题?
解决方案
<span class="close-x" @click="aTags.splice(tagIndex, 1)">❌</span>
利用@click="oDyData.atags.splice(tagIndex,1)
因为您试图访问未定义的 aTags 对象,因为您从 oDyData 获取此对象。O 这可能是您的代码中的问题。您还必须:key
在使用属性时使用v-for
。
推荐阅读
- go-github - 如何使用 go-github 打印发布提交的哈希?
- python - 如何制作一个 Python 并发 Future 来指示 Futures 列表何时完成?
- python - 比较两个数据帧以生成具有所有当前值的最终结果
- c# - 应该具有 DropDownList 控件的单元格在运行时没有控件
- iis-7 - 如何识别 SCHANNEL 错误的应用程序来源?
- python - 从具有分类值的熊猫系列中获取总和
- powerbi - Power BI 视觉对象 - 按组中的最小变量值选择行
- firebase - Firestore Firebase 数据库规则,允许管理员编写
- javascript - Bot 发送嵌入消息但不发送 mp4 附件
- c# - graphql-dotnet/graphql-dotnet/ 和 graphql-dotnet/server/ 有什么区别