为了账号安全,请及时绑定邮箱和手机立即绑定

vue watch不到computed属性的变化?

vue watch不到computed属性的变化?

倚天杖 2019-03-06 14:13:30
computed计算来自store的数据,返回给模板调用,模板中使用v-model双向绑定数据,当改变界面上数据时,deep watch该数据并不成功。数据计算和watch:模板使用:
查看完整描述

4 回答

?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

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


查看完整回答
反对 回复 2019-03-15
?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

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


查看完整回答
反对 回复 2019-03-15
?
缥缈止盈

TA贡献2041条经验 获得超4个赞

先说解决方法: 把watch的timeConfig改成'$store.state.widgetConfig'.


因为你computed的时候调用了getDefaultTime, vue调用这个function添加依赖失败了.


顺带提一下, computed绑定v-model是错误的行为, v-model等同于@input='e => timeConfig = e.target.value', 也就是等于你在代码中改变了computed的值和vuex里的值.

坏处是引起抖动.

解决方案是使用get, set方法: 类似于:


{

    computed: {

        timeConfig: {

            get () {

                return getDefaultTime(this.$store.data)

            },

            set () {

                this.$store.commit('mutation')

            }

        }

    }


查看完整回答
反对 回复 2019-03-15
  • 4 回答
  • 0 关注
  • 4394 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信