vue watch不到computed属性的变化?

computed计算来自store的数据,返回给模板调用,模板中使用v-model双向绑定数据,当改变界面上数据时,deep watch该数据并不成功。

数据计算和watch:
https://img.mukewang.com/5c8b5a25000163f908000283.jpg

模板使用:

https://img2.mukewang.com/5c8b5a270001720b08000193.jpg

倚天杖
浏览 4395回答 4
4回答

呼啦一阵风

你的这个我觉得应该可以给InputNumber 设置一个@change事件,然后将改变的方法放在methods里边,从而改变store的值,第一次加载的时候可以通过computed拿到store 的值,就不设置侦听器了

海绵宝宝撒

watch监听vuex和<input>双向绑定的数据都可以监听成功,你那个对应的return getDefaultTime(widgetConfig.timeType,widgetConfig.timeType)中的getDefaultTime函数是返回的对象吗

缥缈止盈

先说解决方法: 把watch的timeConfig改成'$store.state.widgetConfig'.因为你computed的时候调用了getDefaultTime, vue调用这个function添加依赖失败了.顺带提一下, computed绑定v-model是错误的行为, v-model等同于@input='e => timeConfig = e.target.value', 也就是等于你在代码中改变了computed的值和vuex里的值.坏处是引起抖动.解决方案是使用get, set方法: 类似于:{&nbsp; &nbsp; computed: {&nbsp; &nbsp; &nbsp; &nbsp; timeConfig: {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; get () {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return getDefaultTime(this.$store.data)&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; },&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; set () {&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; this.$store.commit('mutation')&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; &nbsp; &nbsp; }&nbsp; &nbsp; }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript