1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| data() { formData: { areaId: 14, isNew: true, isDraft: false, cName: '', costRate: 0, price: 0, grammage: 0, pictureUri: '', testArr: [], materialListOrigin: [] }, }, watch: { "formData.materialListOrigin": { handler(v) { debugger let r = v.reduce((sum, item) => { sum += item.needWeight * item.unitPrice; return sum; }, 0); this.formData.price = fixedPoint(r, 2); let s = v.reduce((sum, item) => { if (item.isWeight) { sum += item.productWeight; } return sum }, 0); if (this.dishesName === '小吃类') { this.formData.grammage = 0; return; } // 成品克数 this.formData.grammage = fixedPoint(s, 0); }, deep: true }, }, methods() { // 新增菜品保存 saveMateRiarl(name) { this.$refs[name].validate((valid) => { if (!valid) return; this.formData.materialListOrigin.push(this.formValidateMetarial); }) }, }
|
问题, this.formData.materialListOrigin.push,watch 不会触发。
原因:对象下的属性是数组,watch不了
解决方法:直接监听对象
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| watch: { formData: { handler(w) { let v = w.materialListOrigin; let r = v.reduce((sum, item) => { sum += item.needWeight * item.unitPrice; return sum; }, 0); this.formData.price = fixedPoint(r, 2); let s = v.reduce((sum, item) => { if (item.isWeight) { sum += item.productWeight; } return sum }, 0); if (this.dishesName === '小吃类') { this.formData.grammage = 0; return; } // 成品克数 this.formData.grammage = fixedPoint(s, 0); }, deep: true }, },
|