javascript - 使用 VueJS 上的按钮递增时输入未更新
问题描述
我有两个名为 OrderComponent 和 ModalOrder 的组件(使用 vue-modal-js)
我将数据从 OrderComponent 传递到 ModalOrder,在 ModalOrder 中,我使用输入标签来包含 quantity_ordered 和按钮来增加它的值,如下所示
<!-- ModalOrder.vue -->
<input v-model="order.quantity_ordered" />
<button @click.prevent="increment"></button>
在我的脚本标签中
// ModalOrder.vue
<script>
export default {
name: "ModalOrder",
methods: {
beforeOpen (event) {
// if there's a data passed from the OrderComponent, I put it to "order" data
this.order = event.params
// if there's no data passed a.k.a a new record, I have to set the default value to 0
if (this.order.quantity_ordered == undefined) {
this.order.quantity_ordered = 0
}
},
...
increment() {
this.order.quantity_ordered += 1
// this method will not increment the input UI, if it's a new record
},
},
data() {
return {
order : {
code: '',
table_name: '',
customer_name: '',
employee_name: '',
menu_name: '',
quantity_ordered: ''
},
}
}
}
</script>
我的问题是每当我想制作新的订单数据时,当我单击按钮增加时,输入值 UI 不会增加
先感谢您。
解决方案
您正在成为 Vue变更检测警告之一的牺牲品……
Vue无法检测到属性添加或删除
因此,对于您的新记录,您需要在将新值分配给时设置属性order
this.order = {
quantity_ordered: 0,
...event.params // if "quantity_ordered" is set here, it will override the default.
}
或在之后动态设置
if (this.order.quantity_ordered == undefined) {
this.$set(this.order, 'quantity_ordered', 0)
}
如评论中所述,您还应该将 data 属性默认为0
如果它是数字的
data: () => ({
code: '',
table_name: '',
customer_name: '',
employee_name: '',
menu_name: '',
quantity_ordered: 0 //
})
推荐阅读
- reactjs - 部署到 github 后我得到一个空白页面,没有任何错误
- actions-on-google - 是否有可以让我向 Google Assistant 发送命令的 API
- excel - 如何文本框检查自身
- python - Python3在文件夹中创建图像列表
- r - 在 R 中绘制社区矩阵
- ocaml - 如何使用 Jane Core 对列表进行排序?
- c++ - 在 C++ 上使用 QueueAudio 时声音播放不起作用
- android - 相机运行时打开手电筒
- java - 仅当用户不滚动 RecyclerView 时才绑定 ViewHolders
- javascript - 在 gmail Users.messages 中接收未来的内部日期:获取 API