-
Notifications
You must be signed in to change notification settings - Fork 169
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
model set时,fire change事件 #17
Comments
在 a1db511 中修复,同时 |
这会看源码刚看到这里。 |
哈哈我昨天刚在和 @errorrik 说 基本原本的考虑是,这个 不论是 因此,关于这个 另外, 在event里加上scilence 我不是很理解,我认为如果要加这功能,应该在 |
加在event里的初衷是仅修改一点点Model的代码就能把这个silence参数传递给change事件。然后用户在change事件里来处理silence逻辑。不过这肯定不是最好的方法,只是权宜之计。 |
有点奇怪,不是太理解你的说法…… 我的理解是,
放在event里实现是个怎么样的过程,一时想不出来…… |
我的意思大概是这样 |
你这个意思我就明白了,我原来以为你的意思是 把控制权放在event触发时候 ,就感觉似乎搞不定。event触发的时候,传递的相关参数肯定是会一起带过去的,这个放心就好。 至于这个是不是在 |
嗯,说道性能问题,在Model基类中直接实现silence肯定优于我上面提到的方法。 |
其实我的考虑是,ER框架本身的哲学不提倡做双向绑定,以及Model变化自动更新视图这样的功能。因此, |
总结一下,现在的
如果要实现
从效果上来看是可以完成重载的,但处理重载的逻辑本身就足够影响性能(就set一个值,要先经过N个if确定是哪个重载,结果80%的可能还是项目根本不用 有一个办法,是再把
这样会省力很多,就是判断 |
转 @killeryyl 的讨论 嗯,细细想了下,Model.set里的实现,你看这样如何?防止平凡触发change
|
当
所以 @killeryyl 的代码无法区别这2种重载,具体的4种重载我在上面的讨论中有列出,并不是这段代码的逻辑能够覆盖的。 正确的判断逻辑是,判断 所以,我还是支持,如果一定要有 |
若接口定义为Array.<Object = {name,oldvalue,newvalue}> |
这个就没有性能损失了,而且还提升了些许性能。 |
这个是 这个提案用作参考,该Issue继续放置到周末,如果没有什么异议,下周一执行。 因此, @errorrik @DDDBear @Justineo @firede @mytharcher 求讨论,虽然不知道没watch的人会不会通知到…… |
既然点名了,我就抛块砖。 我之前设计过set+change的双接口的模式,set不触发事件,change触发。看你们之前的讨论,只需要在两个接口判断下不是Object的包装成单值的Object,统一for 在 2013年3月14日下午2:42,Gray Zhang notifications@github.com写道:
|
我重新整理一下我的提案。 取消 set方法
当
注意上文所说的 触发 flush()方法
该方案参考的是DOM的 在一次
其中 总结该方案 整合了Backbone和 |
补充一些误区: 第一,这属性叫
因此,对于要 延迟触发 由于这个Issue有了更新,因此讨论截止推迟至下周三18:00,如果没有什么异议,计划是按这个方案执行。 |
我的建议还是直接在Model里支持事件,这是个基本性能无损的事情。 然后不太明白的是,为啥set有集合设置功能 |
这种不用解决吧,如果写成死循环我认为活该。。。 |
原定的 在Model中支持的话,几个问题:
|
举个栗子? |
就是上面讨论的,通过 |
以前是支持的?我个人觉得这个功能可以有,但是:
|
可以把批量设置抽出来,接口名如果 同时一个问题,批量设置的时候, |
我认为,每次调用应该都是立即触发的。有几个人真正知道io的flush是干嘛的……
从易用性上来看有必要,但是使用者其实可以搞个代理。我觉得不提供这货不是硬伤。而且,
silent的意义还在于,如果你提供了视图自动更新,它可以有一种途径让视图别动 |
我觉得是触发一次。任何一次方法调用,触发一次。 |
命名是永远的痛 |
这东西是backbone搞出来的,不是我的创意……
触发一次的话,这一次里肯定有一个数组,提示所有的变化信息。那么单个的 |
setBatch感觉是设置batch这个东西。不如叫batchSet...我鸟纹不好,就一提 |
走批量设置接口
我没调研过,关键是多少人会这么用。
我临时有两种提案
|
有
没
只省不多…… |
用kv的原因是,如果用户有明确的倾向,他就可以 |
嗯,确实是统一的更好 |
不知道现在各业务线对这个东西的使用是怎么样的?如果是标准的MVVM模式的话,没有这样的需求。如果是非常明确的业务逻辑的话,似乎是有这样的需要的。 我对于用object的担心是 |
如果真的碰到有Object.prototype.xxx的,我觉得er可以不拒绝不负责。 其实都可以,什么数据结构都有利弊。也确实是遍历的需求多的多。那就List吧 |
好,总结下:
|
我坐地铁去,回家路上再想想。。。 |
提醒下,别忘了可以这样(之前就提过的说做参考,现在优化了点,再看看吧) |
命名的问题,昨天没想到啥好的,今天起床突然有一个词 |
@killeryyl 最新的方案也有参考这个方法,但 @errorrik 提出的是 |
在 7fa90a3 中重新实现了一系列的方法,参考了 @killeryyl 和 @errorrik 的思想:
|
The text was updated successfully, but these errors were encountered: