omi icon indicating copy to clipboard operation
omi copied to clipboard

omix computed 页面数据问题

Open Er-Dong-Chen opened this issue 5 years ago • 14 comments

computed: { totalPrice(scope){ return scope.data.order.delivery_fee...... } },

data:{ }

data中没初始值就报错,设了初始值 请求然后在赋值改变数据 页面视图不变

Er-Dong-Chen avatar Nov 23 '19 09:11 Er-Dong-Chen

贴一段能复现的链接可以打开开发者工具

dntzhang avatar Nov 23 '19 23:11 dntzhang

或者完整代码贴出来

dntzhang avatar Nov 23 '19 23:11 dntzhang

create(store, { use: [

], computed: { sum(scope){ return scope.data.a + scope.data.b } }, data: { a:10, b:20 },

onLoad: function (options) { let that = this; setInterval(function(){ that.setData({ a:that.data.a+1, b:that.data.b+2, }) },1000) }, })

{{a}} {{b}} {{sum}}

像这种后面在改变值视图computed计算的值不会再改变了

Er-Dong-Chen avatar Nov 26 '19 06:11 Er-Dong-Chen

哦。这种情况确实不更新,我看下怎么去满足这种场景。可能需要一个 update api 开发者主动去刷新

dntzhang avatar Nov 26 '19 06:11 dntzhang

@dntzhang 趁着这个帖子在问一个相似的问题

我使用的是拆分的方式声明,比如

const demo={
    age:2
}

const changeAge(){
   demo.age++
}

然后在页面使用,分两种情况

第一种直接更新,没有问题
this.store.data.demo.age=444
//值会改变
this.store.demo.changeAge()
第二种全部更新,有点问题,就是值无法改变成最新的
this.store.data.demo={
   age:55
}
//这种方式也是改变不了最新的
this.store.set(this.store.data, 'activity', {age:55})

//值会改变,但不是按照55改变的
this.store.demo.changeAge()

fanlei1988 avatar Nov 27 '19 03:11 fanlei1988

对,当computed同时涉及store数据和私域数据时,更新私域data不会更新computed及相关页面

chenzhutian avatar Dec 27 '19 07:12 chenzhutian

这个能支持一下更新私域data更新computed

zongwong avatar Mar 26 '20 02:03 zongwong

+1 希望计算属性能支持页面data

phpcxy avatar Apr 24 '20 05:04 phpcxy

希望可以支持 +1

FleeceWithFlower avatar Jul 08 '20 00:07 FleeceWithFlower

希望可以支持 +1

sunset-L avatar Jul 15 '20 03:07 sunset-L

希望可以支持 +1

conanjunn avatar Aug 19 '20 03:08 conanjunn

希望 computed 支持响应组件或者 page 私域 data 的更新

charliex2 avatar Nov 05 '20 09:11 charliex2

目前有什么可替代的方案吗?

aiingstan avatar Jan 05 '21 09:01 aiingstan

@dntzhang 请问这个有什么办法解决吗?

lfzm avatar Mar 31 '21 13:03 lfzm