Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

允许重新定义同名的计算属性 #28

Closed
otakustay opened this issue Jun 22, 2016 · 9 comments
Closed

允许重新定义同名的计算属性 #28

otakustay opened this issue Jun 22, 2016 · 9 comments

Comments

@otakustay
Copy link
Member

  1. 重新定义时原来定义的change处理函数要干掉
  2. 如果有已经计算的值,是否要恢复到undefined
@Justineo
Copy link
Member

这个 feature 的使用场景是啥呀

@Exodia
Copy link

Exodia commented Jun 22, 2016

这个 feature 的使用场景是啥呀

继承的时候,如果子类不允许重新定义的话,就会造成复用问题- -

@otakustay
Copy link
Member Author

这个 feature 的使用场景是啥呀

是的,主要是继承的场景,父类定义了一个计算属性,子类想重写这个计算属性的逻辑……

当然有办法解决,比如父类的计算属性的逻辑就是调用自己的一个方法,子类去重写这个方法,但是不是有点绕,最后就是每个计算属性对应一个方法了呗

@yibuyisheng
Copy link
Member

如果有已经计算的值,是否要恢复到undefined

这个这样处理感觉怎么样:

覆盖定义计算属性之后,按照新的计算属性的逻辑重新计算一遍值。

@otakustay
Copy link
Member Author

覆盖定义计算属性之后,按照新的计算属性的逻辑重新计算一遍值。

这样必然会再出现一次change事件,但这一次的事件是否是使用者想要的,我搞不明白

所以我最初的设想是通过silent等手段搞出一个没有事件的值变化,让这个属性的值回到最初状态

@yibuyisheng
Copy link
Member

如果 computed 的值和其依赖的变量不同步,感觉会比较尴尬。

defineComputedProperty 是否可以给出这样的配置项:

  • 定义好计算属性之后,是否要初始化地计算一把值,而不是把第一次留给依赖变量的 change ;
  • 如果初始化计算了值,是不是要抛出 computed property change 的事件。

@otakustay
Copy link
Member Author

我最初设回undefined的意思其实是让计算属性回到初始状态,也就是说下一次get时会计算值出来,所以其实并不会不同步

定义好后立刻计算现在就有这个配置

yibuyisheng notifications@github.com于2016年6月22日 周三下午4:32写道:

如果 computed 的值和其依赖的变量不同步,感觉会比较尴尬。

defineComputedProperty 是否可以给出这样的配置项:

  • 定义好计算属性之后,是否要初始化地计算一把值,而不是把第一次留给依赖变量的 change ;
  • 如果初始化计算了值,是不是要抛出 computed property change 的事件。


You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
#28 (comment), or mute
the thread
https://github.com/notifications/unsubscribe/AAnCPfDiOnp37RgxdBEK19ID2yiJGaGSks5qOPM0gaJpZM4I7dCd
.

@yibuyisheng
Copy link
Member

噢,我理解歪了一点。。。

那是不是要重新回到最初的设想了呢?

所以我最初的设想是通过 silent 等手段搞出一个没有事件的值变化,让这个属性的值回到最初状态。

@otakustay
Copy link
Member Author

嗯,其实我最初的设想是这样的:

  1. 每个计算属性有一个叫evaluated的状态
  2. 如果发生get操作时,evaluatedfalse,则需要进行一次值计算,该次计算不会触发change
  3. 依赖的属性的change都会触发计算属性的重新求值,该过程中会触发change

而重新定义计算属性,其实是把evaluated状态改回false

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants